linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/5] locks: implement "filp-private" (aka UNPOSIX) locks
@ 2013-10-11 12:25 Jeff Layton
  2013-10-11 12:25 ` [RFC PATCH 1/5] locks: consolidate checks for compatible filp->f_mode values in setlk handlers Jeff Layton
                   ` (7 more replies)
  0 siblings, 8 replies; 27+ messages in thread
From: Jeff Layton @ 2013-10-11 12:25 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: linux-kernel, nfs-ganesha-devel, samba-technical

At LSF this year, there was a discussion about the "wishlist" for
userland file servers. One of the things brought up was the goofy and
problematic behavior of POSIX locks when a file is closed. Boaz started
a thread on it here:

    http://permalink.gmane.org/gmane.linux.file-systems/73364

Userland fileservers often need to maintain more than one open file
descriptor on a file. The POSIX spec says:

"All locks associated with a file for a given process shall be removed
 when a file descriptor for that file is closed by that process or the
 process holding that file descriptor terminates."

This is problematic since you can't close any file descriptor without
dropping all your POSIX locks. Most userland file servers therefore
end up opening the file with more access than is really necessary, and
keeping fd's open for longer than is necessary to work around this.

This patchset is a first stab at an approach to address this problem by
adding two new l_type values -- F_RDLCKP and F_WRLCKP (the 'P' is short
for "private" -- I'm open to changing that if you have a better
mnemonic).

For all intents and purposes these lock types act just like their
"non-P" counterpart. The difference is that they are only implicitly
released when the fd against which they were acquired is closed. As a
side effect, these locks cannot be merged with "non-P" locks since they
have different semantics on close.

I've given this patchset some very basic smoke testing and it seems to
do the right thing, but it is still pretty rough. If this looks
reasonable I'll plan to do some documentation updates and will take a
stab at trying to get these new lock types added to the POSIX spec (as
HCH recommended).

At this point, my main questions are:

1) does this look useful, particularly for fileserver implementors?

2) does this look OK API-wise? We could consider different "cmd" values
   or even different syscalls, but I figured this makes it clearer that
   "P" and "non-P" locks will still conflict with one another.

Jeff Layton (5):
  locks: consolidate checks for compatible filp->f_mode values in setlk
    handlers
  locks: add definitions for F_RDLCKP and F_WRLCKP
  locks: skip FL_FILP_PRIVATE locks on close unless we're closing the
    correct filp
  locks: handle merging of locks when FL_FILP_PRIVATE is set
  locks: show private lock types in /proc/locks

 fs/locks.c                       | 121 ++++++++++++++++++++++++++-------------
 include/linux/fs.h               |   1 +
 include/uapi/asm-generic/fcntl.h |   9 +++
 3 files changed, 91 insertions(+), 40 deletions(-)

-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2013-10-15  8:56 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-11 12:25 [RFC PATCH 0/5] locks: implement "filp-private" (aka UNPOSIX) locks Jeff Layton
2013-10-11 12:25 ` [RFC PATCH 1/5] locks: consolidate checks for compatible filp->f_mode values in setlk handlers Jeff Layton
2013-10-11 12:25 ` [RFC PATCH 2/5] locks: add definitions for F_RDLCKP and F_WRLCKP Jeff Layton
2013-10-11 12:25 ` [RFC PATCH 3/5] locks: skip FL_FILP_PRIVATE locks on close unless we're closing the correct filp Jeff Layton
2013-10-11 12:25 ` [RFC PATCH 4/5] locks: handle merging of locks when FL_FILP_PRIVATE is set Jeff Layton
2013-10-11 12:25 ` [RFC PATCH 5/5] locks: show private lock types in /proc/locks Jeff Layton
2013-10-11 13:35 ` [RFC PATCH 0/5] locks: implement "filp-private" (aka UNPOSIX) locks Jeff Layton
2013-10-11 15:20   ` Frank Filz
2013-10-11 15:50     ` Jeff Layton
2013-10-11 17:07       ` Frank Filz
2013-10-11 18:42         ` Jeff Layton
2013-10-11 18:53           ` Frank Filz
2013-10-12  9:10             ` Volker Lendecke
2013-10-11 20:07 ` J. Bruce Fields
2013-10-11 21:36   ` Andreas Dilger
2013-10-11 23:21     ` Jeff Layton
2013-10-11 23:49       ` Jeremy Allison
2013-10-12  0:18         ` Scott Lovenberg
2013-10-12  0:42           ` Jeff Layton
2013-10-12 18:12             ` Frank Filz
2013-10-14  7:24               ` Volker Lendecke
2013-10-14 15:23                 ` Frank Filz
2013-10-15  8:56                   ` Volker Lendecke
2013-10-12 20:56             ` Scott Lovenberg
2013-10-12  9:20 ` Stefan (metze) Metzmacher
2013-10-12 11:47   ` Jeff Layton
2013-10-12 18:10     ` [Nfs-ganesha-devel] " Frank Filz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).