Messages in this thread |  | | Date | Sat, 24 Nov 2001 07:26:36 +0100 | From | Andrea Arcangeli <> | Subject | Re: 2.4.15-pre9 breakage (inode.c) |
| |
On Sat, Nov 24, 2001 at 01:08:49AM -0500, Alexander Viro wrote: > > > 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,
you are screwed because you were running a broken filesystem: it is its own business to drop the inodes if it fails, all it needs to do is to call invalidate_inodes(s) internally before returning from the read_super in the failure case.
> with ->i_sb pointing nowhere. When it finally gets evicted we call > inode->i_sb->s_op->clear_inode(). Oops...
Andrea - 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/
|  |