• Miklos Szeredi's avatar
    locks: add special return value for asynchronous locks · bde74e4b
    Miklos Szeredi authored
    Use a special error value FILE_LOCK_DEFERRED to mean that a locking
    operation returned asynchronously.  This is returned by
    
      posix_lock_file() for sleeping locks to mean that the lock has been
      queued on the block list, and will be woken up when it might become
      available and needs to be retried (either fl_lmops->fl_notify() is
      called or fl_wait is woken up).
    
      f_op->lock() to mean either the above, or that the filesystem will
      call back with fl_lmops->fl_grant() when the result of the locking
      operation is known.  The filesystem can do this for sleeping as well
      as non-sleeping locks.
    
    This is to make sure, that return values of -EAGAIN and -EINPROGRESS by
    filesystems are not mistaken to mean an asynchronous locking.
    
    This also makes error handling in fs/locks.c and lockd/svclock.c slightly
    cleaner.
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
    Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
    Cc: "J. Bruce Fields" <bfields@fieldses.org>
    Cc: Matthew Wilcox <matthew@wil.cx>
    Cc: David Teigland <teigland@redhat.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    bde74e4b
svclock.c 23.9 KB