Re: 2.4.15-pre9 breakage (inode.c)

From: Alexander Viro (viro@math.psu.edu)
Date: Sat Nov 24 2001 - 01:08:49 EST


On Fri, 23 Nov 2001, Linus Torvalds wrote:

> > - if (!list_empty(&inode->i_hash) && sb && sb->s_root) {
> > + if (!list_empty(&inode->i_hash)) {
> > if (!(inode->i_state & (I_DIRTY|I_LOCK))) {
> > list_del(&inode->i_list);
> > list_add(&inode->i_list, &inode_unused);
>
> I have to say that I like this patch better myself - the added tests are
> not sensible, and just removing them seems to be the right thing.

Test for ->s_root is bogus and had been removed - check the patch I've sent.

However, that variant suffers from the following problem: if ->read_super()
fails after it had done _any_ iget() (root inode, journal, whatever) -
we are screwed. Sure, we do iput(). And then we have inode stuck in icache,
with ->i_sb pointing nowhere. When it finally gets evicted we call
inode->i_sb->s_op->clear_inode(). Oops...

-
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/



This archive was generated by hypermail 2b29 : Fri Nov 30 2001 - 21:00:16 EST