From: David Chinner <dgc@sgi.com>
To: "Geir A. Myrestrand" <geir.myrestrand@falconstor.com>
Cc: xfs@oss.sgi.com, Eric Sandeen <sandeen@sandeen.net>
Subject: Re: New CentOS4/RHEL4-compatible xfs module rpms
Date: Fri, 8 Dec 2006 10:26:41 +1100 [thread overview]
Message-ID: <20061207232641.GP33919298@melbourne.sgi.com> (raw)
In-Reply-To: <45785ABC.20208@falconstor.com>
On Thu, Dec 07, 2006 at 01:17:32PM -0500, Geir A. Myrestrand wrote:
> Eric Sandeen wrote:
> >Geir A. Myrestrand wrote:
> >
> >>However, I run into issues with xfs_freeze as it often locks up when I
> >>try to freeze a file system where there is I/O activity. Sometimes it
> >>happen on the first xfs_freeze invocation to freeze the file system,
> >>other times I have to unfreeze and then it happens on the second time I
> >>freeze. xfs_freeze never returns when this happens.
> >>
> >>Looks like xfs_io get stuck --see partial output from `ps auxf`:
> >>
> >>strace -ff -o freeze.txt xfs_freeze -f /mnt/xfs
> >> \_ /bin/sh -f /usr/sbin/xfs_freeze -f /mnt/xfs
> >> \_ /usr/sbin/xfs_io -r -p xfs_freeze -x -c freeze /mnt/xfs
> >>
> >>Anyone else encountering this issue?
Yes, and I fixed it about a 2 weeks ago. It's an ABBA deadlock between
lookup of multiple, already dirty, metadata buffers and synchronous buftarg
flushing (that occurs when trying to freeze a filesystem)
<sigh>
I just went looking for the Take message in the archive, and it is not
there. I cc all my takes to xfs@oss.sgi.com, so I'm not sure why it
isn't in the archive....
http://oss.sgi.com/archives/xfs/2006-11/msg00291.html
Was a followup cleanup of a problem found during review of the
fix for the freeze problem.
The text of the take message fo rthe fix is:
Fix a synchronous buftarg flush deadlock when freezing.
At the last stage of a freeze, we flush the buftarg synchronously
over and over again until it succeeds twice without skipping
any buffers.
The delwri list flush skips pinned buffers, but tries to flush
all others. It removes the buffers from the delwri list, then tries
to lock them one at a time as it traverses the list to issue
the I/O. It holds them locked until we issue all of the I/O
and then unlocks them once we've waited for it to complete.
The problem is that during a freeze, the filesystem may
still be doing stuff - like flushing delalloc data buffers -
in the background and hence we can be trying to lock buffers
that were on the delwri list at the same time. Hence we can
get ABBA deadlocks between threads doing allocation and the
buftarg flush (freeze) thread.
Fix it by skipping locked (and pinned) buffers as we traverse the
delwri buffer list.
----
And the diff was:
http://oss.sgi.com/cgi-bin/cvsweb.cgi/linux-2.6-xfs/fs/xfs/linux-2.6/xfs_buf.c.diff?r1=1.229;r2=1.230
Cheers,
Dave.
--
Dave Chinner
Principal Engineer
SGI Australian Software Group
next prev parent reply other threads:[~2006-12-07 23:28 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-19 19:07 New CentOS4/RHEL4-compatible xfs module rpms Eric Sandeen
2006-12-07 17:25 ` Geir A. Myrestrand
2006-12-07 17:52 ` Eric Sandeen
2006-12-07 18:17 ` Geir A. Myrestrand
2006-12-07 23:26 ` David Chinner [this message]
2006-12-08 2:58 ` Geir A. Myrestrand
2006-12-07 18:19 ` Geir A. Myrestrand
2006-12-07 20:51 ` Geir A. Myrestrand
2006-12-07 21:11 ` Nathan Scott
2006-12-07 21:35 ` Geir A. Myrestrand
2006-12-07 21:40 ` Nathan Scott
2006-12-07 21:51 ` Geir A. Myrestrand
2006-12-07 22:06 ` Nathan Scott
2006-12-07 22:16 ` Geir A. Myrestrand
2006-12-07 22:18 ` Eric Sandeen
2006-12-07 22:25 ` Geir A. Myrestrand
2006-12-07 22:30 ` Eric Sandeen
2006-12-07 22:52 ` Geir A. Myrestrand
2006-12-07 22:53 ` Eric Sandeen
2006-12-07 23:08 ` Geir A. Myrestrand
2007-07-19 14:37 ` James Braid
2007-07-19 15:15 ` Eric Sandeen
2007-07-21 3:34 ` James Braid
2007-07-21 14:58 ` Eric Sandeen
2007-07-21 15:36 ` James Braid
-- strict thread matches above, loose matches on Subject: below --
2007-08-08 16:04 James Pearson
2007-08-08 16:09 ` Eric Sandeen
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=20061207232641.GP33919298@melbourne.sgi.com \
--to=dgc@sgi.com \
--cc=geir.myrestrand@falconstor.com \
--cc=sandeen@sandeen.net \
--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