From: David Chinner <dgc@sgi.com>
To: Stephane Doyon <sdoyon@max-t.com>
Cc: linux-xfs@oss.sgi.com, lnx1138@us.ibm.com
Subject: Re: Infinite loop in xfssyncd on full file system
Date: Wed, 23 Aug 2006 14:48:30 +1000 [thread overview]
Message-ID: <20060823044829.GD807872@melbourne.sgi.com> (raw)
In-Reply-To: <20060823040218.GC807872@melbourne.sgi.com>
On Wed, Aug 23, 2006 at 02:02:18PM +1000, David Chinner wrote:
> On Tue, Aug 22, 2006 at 04:01:10PM -0400, Stephane Doyon wrote:
> > I'm seeing what appears to be an infinite loop in xfssyncd. It is
> > triggered when writing to a file system that is full or nearly full. I
> > have pinpointed the change that introduced this problem: it's
> >
> > "TAKE 947395 - Fixing potential deadlock in space allocation and
> > freeing due to ENOSPC"
> >
> > git commit d210a28cd851082cec9b282443f8cc0e6fc09830.
>
> Thanks for tracking that down - I've been trying to isolate a test case
> for another report of this looping in xfssyncd.
>
> [Luciano - this is the same problem we've been trying to track down.]
>
> > I hope you XFS experts see what might be wrong with that bug fix. It's
> > ironic but for me, this (apparent) infinite loop seems much easier to hit
> > than the out-of-order locking problem that the commit in question was
> > supposed to fix. Let me know if I can get you any more info.
>
> Now we know what patch introduces the problem, we know where to look.
> Stay tuned...
I've had a quick look at the above commit. I'm not yet certain that
everything is correct in terms of the semantics laid down in the
change or that enough blocks are reserved for btree splits , but I
can see a hole in the implementation on multiprocessor machines.
Stephane/Luciano - can you test the following patch (note: compile
tested only) and see if it fixes the problem?
Cheers,
Dave.
--
Dave Chinner
Principal Engineer
SGI Australian Software Group
---
fs/xfs/xfs_mount.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: 2.6.x-xfs-new/fs/xfs/xfs_mount.c
===================================================================
--- 2.6.x-xfs-new.orig/fs/xfs/xfs_mount.c 2006-08-18 15:29:28.000000000 +1000
+++ 2.6.x-xfs-new/fs/xfs/xfs_mount.c 2006-08-23 14:28:18.059385018 +1000
@@ -2108,11 +2108,11 @@ again:
case XFS_SBS_FDBLOCKS:
BUG_ON((mp->m_resblks - mp->m_resblks_avail) != 0);
- lcounter = icsbp->icsb_fdblocks;
+ lcounter = icsbp->icsb_fdblocks - SET_ASIDE_BLOCKS;
lcounter += delta;
if (unlikely(lcounter < 0))
goto slow_path;
- icsbp->icsb_fdblocks = lcounter;
+ icsbp->icsb_fdblocks = lcounter + SET_ASIDE_BLOCKS;
break;
default:
BUG();
next prev parent reply other threads:[~2006-08-23 4:50 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-22 20:01 Infinite loop in xfssyncd on full file system Stephane Doyon
2006-08-23 4:02 ` David Chinner
2006-08-23 4:48 ` David Chinner [this message]
2006-08-23 15:00 ` Stephane Doyon
2006-08-23 19:10 ` Luciano Chavez
2006-08-23 23:14 ` David Chinner
2006-08-28 7:23 ` David Chinner
2006-08-28 19:40 ` Luciano Chavez
2006-08-29 13:25 ` Stephane Doyon
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=20060823044829.GD807872@melbourne.sgi.com \
--to=dgc@sgi.com \
--cc=linux-xfs@oss.sgi.com \
--cc=lnx1138@us.ibm.com \
--cc=sdoyon@max-t.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