locks: make locks_mandatory_area check for file-private locks
authorJeff Layton <jlayton@redhat.com>
Mon, 10 Mar 2014 13:54:19 +0000 (09:54 -0400)
committerJeff Layton <jlayton@redhat.com>
Mon, 31 Mar 2014 12:24:43 +0000 (08:24 -0400)
commit29723adee11804b548903ddb1db666cf4a60f60e
tree15ffb52af6c920d52cb53b970c9d6a21fe6cc2b1
parentd7a06983a01a33605191c0766857b832ac32a2b6
locks: make locks_mandatory_area check for file-private locks

Allow locks_mandatory_area() to handle file-private locks correctly.
If there is a file-private lock set on an open file and we're doing I/O
via the same, then that should not cause anything to block.

Handle this by first doing a non-blocking FL_ACCESS check for a
file-private lock, and then fall back to checking for a classic POSIX
lock (and possibly blocking).

Note that this approach is subject to the same races that have always
plagued mandatory locking on Linux.

Reported-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
fs/locks.c