lkml.org 
[lkml]   [2001]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: 2.4.15-pre9 breakage (inode.c)
    On Sat, Nov 24, 2001 at 07:50:45AM +0100, Andrea Arcangeli wrote:
    > On Sat, Nov 24, 2001 at 01:37:22AM -0500, Alexander Viro wrote:
    > >
    > >
    > > On Sat, 24 Nov 2001, Alexander Viro wrote:
    > >
    > > > On Sat, 24 Nov 2001, Andrea Arcangeli wrote:
    > > >
    > > > > 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.
    > > >
    > > > Cute. Do you realize that _every_ fs would have to do that?
    > >
    > > Put it that way:
    > > * if ->read_super() decides to fail, it should evict all inodes
    > > it had put into icache.
    > > * if ->put_super() does any iput(), it should take care to evict
    > > that inode from icache.
    >
    > exactly.
    >
    > > IOW,
    > > * if we do iput() while we are outside of (success of ->read_super(),
    > > call of ->put_super()) - we want that inode to be evicted ASAP.
    > >
    > > Which is precisely what 2.4.15+patch does.
    >
    > and it's slower and overlay complex compared to the right fix:
    >
    > --- 2.4.15aa1/fs/ext2/super.c.~1~ Fri Nov 23 08:21:00 2001
    > +++ 2.4.15aa1/fs/ext2/super.c Sat Nov 24 07:50:19 2001
    > @@ -643,6 +643,7 @@
    > printk(KERN_ERR "EXT2-fs: corrupt root inode, run e2fsck\n");
    > } else
    > printk(KERN_ERR "EXT2-fs: get root inode failed\n");
    > + invalidate_inodes(sb);
    > goto failed_mount2;
    > }
    > ext2_setup_super (sb, es, sb->s_flags & MS_RDONLY);

    this one looks even better (and it doesn't need to propagate the fix to
    the lowlevel):

    --- 2.4.15aa1/fs/super.c.~1~ Fri Nov 23 08:21:01 2001
    +++ 2.4.15aa1/fs/super.c Sat Nov 24 07:58:37 2001
    @@ -470,6 +470,7 @@
    return s;

    out_fail:
    + invalidate_inodes(s);
    s->s_dev = 0;
    s->s_bdev = 0;
    s->s_type = NULL;
    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/

    \
     
     \ /
      Last update: 2005-03-22 13:13    [W:0.055 / U:89.552 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site