lkml.org 
[lkml]   [1996]   [Nov]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    Subject[PATCH] Re: Corrupted inode list?

    On Thu, 28 Nov 1996, Andrew E. Mileski wrote:

    > I've tracked down my REPEATABLE OOPSes to the inode list getting
    > corrupted...at least that is my take on it. This happens after a
    > lot of activity on an IDE VFAT fs.
    >
    > In fs/inode.c, sync_inodes() will try to de-reference a NULL pointer :-(
    > The real problem is, how is the list getting corrupted in the first place
    >
    > I've had this problem with all v2.* kernels, including v2.1.13.
    >
    > I'll post more info on this as I discover it, but I'd sure like
    > some help with this, as my fs knowledge is almost non-existant.

    Ok, this is still the same bug I've had a patch avail for the past
    month... no more inode corruption. The following patch fixes the
    following:
    a. inode list corrupted if put_inode slept after calling
    clear_inode, inode could be allocated by iget
    b. some routines which called iput forgot that iput could sleep
    c. mounting multiple filesystems on top of the same mount point
    should work (underlying filesystems _must_ use __iget in their
    lookup routines)
    d. adds Documentation/filesystems/vfs.txt

    I apologize for the ugliness of it, but there isn't really a better way
    to deal with it that I can think of - the alternative is to split iput up
    into two parts and make require each underlying filesystem to call
    either clear_inode or the new alternative (reuse_inode?). As it stands,
    most filesystems do not seem to be aware of the potential races
    surrounding iput, and almost everyone forgets that iput can (and will)
    sleep.

    For what it's worth, I checked 0.99pl8, and this bug is indeed present.
    Granted only the msdos, smb, umsdos and vfat filesystems were affected,
    but can we safely say that this is the longest outstanding bug in the
    kernel? Ouch!

    -b (who really hates races)

    p.s: The patch is against 2.0.24 and needs a slight massage to fit into
    2.1, however I think that stable 2.0 needs it much more (as newbies
    will try vfat/umsdos with a stable kernel and get bitten). It compiles
    cleanly this time (tested w/all fs as modules).

    --snip (also at ftp://dot.superaje.com/pub/linux/vfs-2.diff.gz)
    begin 644 vfs-2.diff.gz
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
    07\Q^;N$A_P\(J6?\.;0``/-Q
    `
    end


    \
     
     \ /
      Last update: 2005-03-22 13:38    [W:5.585 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site