[lkml]   [2008]   [May]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [LTP/VFS] fcntl SETLEASE fails on ramfs/tmpfs
    On Tue, Apr 29, 2008 at 04:21:42PM -0600, Matthew Wilcox wrote:
    > On Tue, Apr 29, 2008 at 01:54:54PM -0700, Andrew Morton wrote:
    > > I guess we should make the generic_setlease() heuristic smarter.
    > >
    > > Of course the _reason_ for that heuristic is uncommented and lost in time.
    > > And one wonders what locking prevents it from being totally racy, and if
    > > "none", what happens when the race hits. Sigh.
    > It's hardly "lost in time" when you can ask the original author.
    > If there are multiple processes with this file open, you can't place a
    > lease on it.

    ... except that it has nofsckingthing in common with the checks in
    question. Number of processes having a file open has has nothing to
    do dentry or inode refcounts; indeed, if you have opened file once
    it'd have only one struct file. Moreover, e.g. stat(2) on its name
    will bump dentry refcount just fine. Moreover, if you have two threads
    with common descriptor table, not even *file* refcount will help you.

    BTW, ->fl_owner in those suckers is fairly useless - open files, take
    leases, fork, have parent exit. Voila - you've got a bunch of file_lock
    with ->fl_owner pointing to freed files_struct. Fortunately it's never
    going to be dereferenced, but results of comparisons are unreliable as

     \ /
      Last update: 2008-05-01 08:37    [W:0.032 / U:2.836 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site