• Miklos Szeredi's avatar
    fuse: fix flock · 37fb3a30
    Miklos Szeredi authored
    Commit a9ff4f87 "fuse: support BSD locking semantics" overlooked a
    number of issues with supporing flock locks over existing POSIX
    locking infrastructure:
    
      - it's not backward compatible, passing flock(2) calls to userspace
        unconditionally (if userspace sets FUSE_POSIX_LOCKS)
    
      - it doesn't cater for the fact that flock locks are automatically
        unlocked on file release
    
      - it doesn't take into account the fact that flock exclusive locks
        (write locks) don't need an fd opened for write.
    
    The last one invalidates the original premise of the patch that flock
    locks can be emulated with POSIX locks.
    
    This patch fixes the first two issues.  The last one needs to be fixed
    in userspace if the filesystem assumed that a write lock will happen
    only on a file operned for write (as in the case of the current fuse
    library).
    Reported-by: default avatarSebastian Pipping <webmaster@hartwork.org>
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
    37fb3a30
inode.c 28.2 KB