Re: [patch 12/16] fix race between writeback and unlink

Chris Mason (mason@suse.com)
03 Jun 2002 18:10:33 -0400


On Sat, 2002-06-01 at 15:19, Andrew Morton wrote:
> Linus Torvalds wrote:
> >
> > On Sat, 1 Jun 2002, Andrew Morton wrote:
> > >
> > > So run __iget prior to dropping inode_lock.
> >
> > This part looks horrible:
> >
> > + spin_unlock(&inode_lock);
> > + iput(inode);
> > + spin_lock(&inode_lock);
>
> Yup. The inode refcounting APIs are really awkward. Note how I recently
> added dopey code in ext2_put_inode() to only drop the prealloc window on
> the "final" iput().

Hmmm, a quick glance makes the test in ext2_put_inode look unsafe.

iput calls put_inode before decrementing i_count. So, nothing stops 5
iput callers from all deciding i_count > 2 and leaving the preallocation
blocks hanging.

Also, a knfsd triggered iget/iput pair should hit the same race with an
put_inode call.

Or am I missing something?

-chris

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/