From: Dave Chinner <david@fromorbit.com>
To: xfs@oss.sgi.com
Subject: [PATCH 36/37] xfs: flush outstanding buffers on log mount failure
Date: Mon, 23 Apr 2012 15:59:06 +1000 [thread overview]
Message-ID: <1335160747-17254-37-git-send-email-david@fromorbit.com> (raw)
In-Reply-To: <1335160747-17254-1-git-send-email-david@fromorbit.com>
From: Dave Chinner <dchinner@redhat.com>
When we fail to mount the log in xfs_mountfs(), we tear down all the
infrastructure we have already allocated. However, the process of
mounting the log may have progressed to the point of reading,
caching and modifying buffers in memory. Hence before we can free
all the infrastructure, we have to flush and remove all the buffers
from memory.
Problem first reported by Eric Sandeen, later a different incarnation
was reported by Ben Myers.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
fs/xfs/xfs_mount.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index 6698e0d..b09a4a7 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -1288,7 +1288,7 @@ xfs_mountfs(
XFS_FSB_TO_BB(mp, sbp->sb_logblocks));
if (error) {
xfs_warn(mp, "log mount failed");
- goto out_free_perag;
+ goto out_fail_wait;
}
/*
@@ -1315,7 +1315,7 @@ xfs_mountfs(
!mp->m_sb.sb_inprogress) {
error = xfs_initialize_perag_data(mp, sbp->sb_agcount);
if (error)
- goto out_free_perag;
+ goto out_fail_wait;
}
/*
@@ -1439,6 +1439,10 @@ xfs_mountfs(
IRELE(rip);
out_log_dealloc:
xfs_log_unmount(mp);
+ out_fail_wait:
+ if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp)
+ xfs_wait_buftarg(mp->m_logdev_targp);
+ xfs_wait_buftarg(mp->m_ddev_targp);
out_free_perag:
xfs_free_perag(mp);
out_remove_uuid:
--
1.7.9.5
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2012-04-23 5:59 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-23 5:58 [PATCH 00/37] xfs: current 3.4 patch queue Dave Chinner
2012-04-23 5:58 ` [PATCH 01/37] xfs: remove log item from AIL in xfs_qm_dqflush after a shutdown Dave Chinner
2012-04-23 5:58 ` [PATCH 02/37] xfs: remove log item from AIL in xfs_iflush " Dave Chinner
2012-04-23 15:39 ` Mark Tinguely
2012-04-23 5:58 ` [PATCH 03/37] xfs: allow assigning the tail lsn with the AIL lock held Dave Chinner
2012-04-23 5:58 ` [PATCH 04/37] xfs: implement freezing by emptying the AIL Dave Chinner
2012-04-23 15:40 ` Mark Tinguely
2012-04-29 21:43 ` Christoph Hellwig
2012-04-23 5:58 ` [PATCH 05/37] xfs: don't flush inodes from background inode reclaim Dave Chinner
2012-04-23 5:58 ` [PATCH 06/37] xfs: do not write the buffer from xfs_iflush Dave Chinner
2012-04-23 5:58 ` [PATCH 07/37] xfs: do not write the buffer from xfs_qm_dqflush Dave Chinner
2012-04-23 5:58 ` [PATCH 08/37] xfs: do not add buffers to the delwri queue until pushed Dave Chinner
2012-04-23 5:58 ` [PATCH 09/37] xfs: on-stack delayed write buffer lists Dave Chinner
2012-04-25 18:34 ` Mark Tinguely
2012-04-29 21:44 ` Christoph Hellwig
2012-04-23 5:58 ` [PATCH 10/37] xfs: remove some obsolete comments in xfs_trans_ail.c Dave Chinner
2012-04-23 15:41 ` Mark Tinguely
2012-04-23 5:58 ` [PATCH 11/37] xfs: pass shutdown method into xfs_trans_ail_delete_bulk Dave Chinner
2012-04-23 5:58 ` [PATCH 12/37] xfs: Do background CIL flushes via a workqueue Dave Chinner
2012-04-23 7:54 ` [PATCH 12/37 V2] " Dave Chinner
2012-04-29 21:46 ` Christoph Hellwig
2012-04-23 5:58 ` [PATCH 13/37] xfs: page type check in writeback only checks last buffer Dave Chinner
2012-04-23 5:58 ` [PATCH 14/37] xfs: Use preallocation for inodes with extsz hints Dave Chinner
2012-04-29 21:47 ` Christoph Hellwig
2012-04-23 5:58 ` [PATCH 15/37] xfs: fix buffer lookup race on allocation failure Dave Chinner
2012-04-23 5:58 ` [PATCH 16/37] xfs: check for buffer errors before waiting Dave Chinner
2012-04-23 5:58 ` [PATCH 17/37] xfs: fix incorrect b_offset initialisation Dave Chinner
2012-04-23 5:58 ` [PATCH 18/37] xfs: use kmem_zone_zalloc for buffers Dave Chinner
2012-04-23 5:58 ` [PATCH 19/37] xfs: clean up buffer get/read call API Dave Chinner
2012-04-23 5:58 ` [PATCH 20/37] xfs: kill b_file_offset Dave Chinner
2012-04-23 5:58 ` [PATCH 21/37] xfs: use blocks for counting length of buffers Dave Chinner
2012-04-23 5:58 ` [PATCH 22/37] xfs: use blocks for storing the desired IO size Dave Chinner
2012-04-23 5:58 ` [PATCH 23/37] xfs: kill xfs_buf_btoc Dave Chinner
2012-04-23 5:58 ` [PATCH 24/37] xfs: kill XBF_LOCK Dave Chinner
2012-04-23 5:58 ` [PATCH 25/37] xfs: kill xfs_read_buf() Dave Chinner
2012-04-23 5:58 ` [PATCH 26/37] xfs: kill XBF_DONTBLOCK Dave Chinner
2012-04-23 5:58 ` [PATCH 27/37] xfs: use iolock on XFS_IOC_ALLOCSP calls Dave Chinner
2012-04-23 5:58 ` [PATCH 28/37] xfs: move xfsagino_t to xfs_types.h Dave Chinner
2012-04-23 15:43 ` Mark Tinguely
2012-04-24 15:10 ` Mark Tinguely
2012-04-29 21:49 ` Christoph Hellwig
2012-04-30 0:32 ` Dave Chinner
2012-04-23 5:58 ` [PATCH 29/37] xfs: move busy extent handling to it's own file Dave Chinner
2012-04-23 17:57 ` Ben Myers
2012-04-24 0:25 ` [PATCH 29/37 V2] " Dave Chinner
2012-04-24 15:56 ` Mark Tinguely
2012-04-24 18:10 ` Mark Tinguely
2012-04-29 10:39 ` [PATCH 29/37 V3] " Dave Chinner
2012-04-29 21:50 ` Christoph Hellwig
2012-04-30 0:36 ` Dave Chinner
2012-04-30 2:17 ` Dave Chinner
2012-04-23 5:59 ` [PATCH 30/37] xfs: clean up busy extent naming Dave Chinner
2012-04-24 18:11 ` Mark Tinguely
2012-04-29 10:41 ` [PATCH 30/37 V2] " Dave Chinner
2012-04-29 21:50 ` Christoph Hellwig
2012-04-23 5:59 ` [PATCH 31/37] xfs: move xfs_fsb_to_db to xfs_bmap.h Dave Chinner
2012-04-24 19:24 ` Mark Tinguely
2012-04-29 21:53 ` Christoph Hellwig
2012-04-30 2:31 ` Dave Chinner
2012-04-23 5:59 ` [PATCH 32/37] xfs: move xfs_get_extsz_hint() and kill xfs_rw.h Dave Chinner
2012-04-24 19:30 ` Mark Tinguely
2012-04-29 21:53 ` Christoph Hellwig
2012-04-23 5:59 ` [PATCH 33/37] xfs: move xfs_do_force_shutdown() and kill xfs_rw.c Dave Chinner
2012-04-24 19:37 ` Mark Tinguely
2012-04-29 21:54 ` Christoph Hellwig
2012-04-30 2:38 ` Dave Chinner
2012-04-23 5:59 ` [PATCH 34/37] xfs: clean up xfs_bit.h includes Dave Chinner
2012-04-24 19:44 ` Mark Tinguely
2012-04-29 21:55 ` Christoph Hellwig
2012-04-30 2:40 ` Dave Chinner
2012-04-23 5:59 ` [PATCH 35/37] xfs: Properly exclude IO type flags from buffer flags Dave Chinner
2012-04-24 20:02 ` Mark Tinguely
2012-04-29 21:55 ` Christoph Hellwig
2012-04-23 5:59 ` Dave Chinner [this message]
2012-04-23 15:47 ` [PATCH 36/37] xfs: flush outstanding buffers on log mount failure Mark Tinguely
2012-04-29 21:55 ` Christoph Hellwig
2012-04-23 5:59 ` [PATCH 37/37] xfs: make XBF_MAPPED the default behaviour Dave Chinner
2012-04-25 18:35 ` Mark Tinguely
2012-04-25 20:09 ` Mark Tinguely
2012-04-25 22:33 ` Dave Chinner
2012-04-29 21:57 ` Christoph Hellwig
2012-04-30 2:45 ` Dave Chinner
2012-04-23 18:01 ` [PATCH 00/37] xfs: current 3.4 patch queue Ben Myers
2012-04-23 23:29 ` Dave Chinner
2012-04-30 14:24 ` Ben Myers
2012-04-28 2:15 ` Ben Myers
2012-04-28 21:28 ` Ben Myers
2012-04-29 0:21 ` Dave Chinner
2012-04-29 0:14 ` Dave Chinner
2012-04-30 14:44 ` Ben Myers
2012-04-30 23:04 ` Dave Chinner
2012-04-30 14:32 ` Assertion failed: RB_EMPTY_NODE(&bp->b_rbnode) Ben Myers
2012-04-30 23:12 ` Dave Chinner
2012-04-30 14:34 ` [PATCH 00/37] xfs: current 3.4 patch queue Ben Myers
2012-04-30 23:20 ` Dave Chinner
2012-04-30 19:25 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1335160747-17254-37-git-send-email-david@fromorbit.com \
--to=david@fromorbit.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox