xfs
[Top] [All Lists]

Re: New CentOS4/RHEL4-compatible xfs module rpms

To: xfs@xxxxxxxxxxx
Subject: Re: New CentOS4/RHEL4-compatible xfs module rpms
From: "Geir A. Myrestrand" <geir.myrestrand@xxxxxxxxxxxxxx>
Date: Thu, 07 Dec 2006 21:58:38 -0500
In-reply-to: <20061207232641.GP33919298@xxxxxxxxxxxxxxxxx>
Organization: FalconStor Software, Inc.
References: <4560AB84.9060200@xxxxxxxxxxx> <45784E71.4080605@xxxxxxxxxxxxxx> <457854CB.5030507@xxxxxxxxxxx> <45785ABC.20208@xxxxxxxxxxxxxx> <20061207232641.GP33919298@xxxxxxxxxxxxxxxxx>
Reply-to: geir.myrestrand@xxxxxxxxxxxxxx
Sender: xfs-bounce@xxxxxxxxxxx
User-agent: Thunderbird 1.5.0.8 (Windows/20061025)
David Chinner wrote:
On Thu, Dec 07, 2006 at 01:17:32PM -0500, Geir A. Myrestrand 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>

That is awesome news, mate!  :-)

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.

That sounds like an accurate description of my test environment. I bet this is the issue...

Fix it by skipping locked (and pinned) buffers as we traverse the
delwri buffer list.

Good to know that you're one step ahead!

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

Excellent. I will try this tomorrow (it's late in the evening here in New York now). I'll let you know how it works out.

Thanks!


--

Geir A. Myrestrand

Attachment: geir.myrestrand.vcf
Description: Vcard

<Prev in Thread] Current Thread [Next in Thread>