public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@infradead.org>
To: Jakob Oestergaard <jakob@unthought.net>, Phil Dier <phil@dier.us>,
	linux-kernel@vger.kernel.org, Scott Holdren <scott@icglink.com>,
	ziggy <ziggy@icglink.com>, Jack Massari <webmaster@icglink.com>
Subject: Re: oops with dual xeon 2.8ghz  4gb ram +smp, software raid, lvm, and xfs
Date: Tue, 23 Nov 2004 22:39:35 +0000	[thread overview]
Message-ID: <20041123223935.GA1889@infradead.org> (raw)
In-Reply-To: <20041123170222.GS4469@unthought.net>

On Tue, Nov 23, 2004 at 06:02:23PM +0100, Jakob Oestergaard wrote:
> With SMP, what I see is that sometimes a directory might decide that
> it's a file - but I can't delete it, becuase it isn't 'empty' (it's
> still somehow a directory).  Waiting a day or two, the system will
> change its mind back to letting the directory be a directory. Sometimes
> modes will be fscked up as well - a regular file can change owner, or it
> can change modes from '-rw-rw---' to '?---------'.    Weird stuff, no
> way to reproduce it reliably.

Actually I can reproduce it reliably by running nfs_fsstress.sh for a
looong time.  The problem is that in the current XFS code the inode
generation counter starts at 0, but higher level code uses that as
a wildcard for any possible generation, so you may get a newly created
file for a stale nfs file handler of an deleted file with the same inode
number.

The patch below fixes it for me:


Index: fs/xfs/xfs_inode.c
===================================================================
RCS file: /cvs/linux-2.6-xfs/fs/xfs/xfs_inode.c,v
retrieving revision 1.406
diff -u -p -r1.406 xfs_inode.c
--- fs/xfs/xfs_inode.c	27 Oct 2004 12:06:24 -0000	1.406
+++ fs/xfs/xfs_inode.c	23 Nov 2004 20:40:56 -0000
@@ -1224,9 +1224,16 @@ xfs_ialloc(
 	ip->i_d.di_nextents = 0;
 	ASSERT(ip->i_d.di_nblocks == 0);
 	xfs_ichgtime(ip, XFS_ICHGTIME_CHG|XFS_ICHGTIME_ACC|XFS_ICHGTIME_MOD);
+
 	/*
-	 * di_gen will have been taken care of in xfs_iread.
+	 * Bump the generation count so no one will confuse us with an
+	 * earlier incarnations of this inode.
+	 *
+	 * Done early to skip generation 0, which is used as a wildcard
+	 * by higher level code.
 	 */
+	ip->i_d.di_gen++;
+
 	ip->i_d.di_extsize = 0;
 	ip->i_d.di_dmevmask = 0;
 	ip->i_d.di_dmstate = 0;
@@ -2370,11 +2377,6 @@ xfs_ifree(
 		XFS_IFORK_DSIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t);
 	ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS;
 	ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS;
-	/*
-	 * Bump the generation count so no one will be confused
-	 * by reincarnations of this inode.
-	 */
-	ip->i_d.di_gen++;
 	xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
 
 	if (delete) {

  parent reply	other threads:[~2004-11-23 22:43 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-22 19:06 oops with dual xeon 2.8ghz 4gb ram +smp, software raid, lvm, and xfs Phil Dier
2004-11-23  0:17 ` Andrew Morton
2004-11-23 15:37   ` Phil Dier
2004-11-23 17:02     ` Jakob Oestergaard
2004-11-23 18:29       ` Phil Dier
2004-11-23 22:39       ` Christoph Hellwig [this message]
2004-11-23 22:56         ` Jakob Oestergaard
2004-11-23 23:12           ` Christoph Hellwig
2004-11-30 17:37         ` Phil Dier
2004-11-24 15:45   ` Phil Dier
2004-11-24 16:56     ` Christoph Hellwig
2004-11-24 23:12     ` Andrew Morton
2004-11-25  0:48       ` Phil Dier
2004-11-28 11:29       ` David Greaves
2004-11-28 18:27         ` Andrew Morton
2004-12-08  9:03           ` David Greaves
2004-12-08  9:15             ` Andrew Morton
2004-12-09  3:50               ` Nigel Cunningham
2004-11-24 23:12   ` Neil Brown
2004-11-24 23:50     ` Andrew Morton
2004-11-25  0:14       ` Neil Brown
2004-11-25  1:05         ` Andrew Morton
2004-11-25  6:57         ` Jens Axboe
2004-11-25  7:08           ` Andrew Morton
2004-11-25  7:11             ` Jens Axboe
  -- strict thread matches above, loose matches on Subject: below --
2004-11-23 20:48 Joerg Sommrey
2004-11-24  9:28 Anders Saaby
     [not found] <33rTj-1VZ-13@gated-at.bofh.it>
     [not found] ` <33wJq-633-25@gated-at.bofh.it>
     [not found]   ` <34fwL-P1-21@gated-at.bofh.it>
     [not found]     ` <34fGp-V2-9@gated-at.bofh.it>
     [not found]       ` <34fGp-V2-7@gated-at.bofh.it>
     [not found]         ` <34lVr-5WH-1@gated-at.bofh.it>
     [not found]           ` <34m5a-61Z-9@gated-at.bofh.it>
2004-11-25 11:07             ` Andi Kleen

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=20041123223935.GA1889@infradead.org \
    --to=hch@infradead.org \
    --cc=jakob@unthought.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=phil@dier.us \
    --cc=scott@icglink.com \
    --cc=webmaster@icglink.com \
    --cc=ziggy@icglink.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