lkml.org 
[lkml]   [2002]   [Jul]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch 13/13] lseek speedup
    Anton Altaparmakov wrote:
    >
    > At 17:49 17/07/02, Andrew Morton wrote:
    > >Anton Altaparmakov wrote:
    > > >
    > > > > Now, why are we taking i_sem for lseek/readdir
    > > > >exclusion and not a per-file lock?
    > > >
    > > > Because it also excludes against directory modifications, etc. Just imagine
    > > > what "rm somefile" or "mv somefile otherfile" or "touch newfile" would do
    > > > to the directory contents and what a concurrent readdir() would do... A
    > > > very loud *BANG* is the only thing that springs to mind...
    > >
    > >That's different. i_size, contents of things, yes - i_sem for
    > >those.
    > >
    > >But protection of struct file should not be via any per-inode thing.
    >
    > Oh, I see. But that would mean adding yet another lock to an existing
    > locking scheme? So both i_sem and the "per file lock" would nead to be held
    > over readdir(). That's doable but it would have to be a semaphore based
    > lock due to readdir()...

    Adding a sleeping lock to struct file for this would make sense; using
    i_sem to protect the innards of struct file ain't right.

    However I'm not sure that the VFS needs to be serialising lseek
    and readdir at all. The fs can do that if it really needs to.

    And does it really need to? Setting aside the non-atomic 64-bit
    read, it may be sufficient for the fs to do what ext2_readdir
    does: read f_pos once on entry, write it once on exit and if
    there was a concurrent lseek then its results get stomped on.

    Can you see any problem with that?

    Anyway. It's not exactly a top-priority thing. I'll park
    it for a while and just stop running that test ;)

    -
    -
    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:27    [W:0.024 / U:0.268 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site