From: "Stefan (metze) Metzmacher" <metze@samba.org>
To: Jeff Layton <jlayton@redhat.com>, linux-fsdevel@vger.kernel.org
Cc: nfs-ganesha-devel@lists.sourceforge.net,
samba-technical@lists.samba.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 0/5] locks: implement "filp-private" (aka UNPOSIX) locks
Date: Sat, 12 Oct 2013 11:20:33 +0200 [thread overview]
Message-ID: <52591461.7070605@samba.org> (raw)
In-Reply-To: <1381494322-2426-1-git-send-email-jlayton@redhat.com>
Hi Jeff,
> 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
I haven't looked at the patches, but it would be very good to have locks
per "open" and not per "fd".
What happens in this example?
fd1 = open("/somefile", ...);
fd2 = open("/somefile", ...);
fd3 = dup(fd1);
lock(fd1, range1)
lock(fd2, range2)
lock(fd3, range3)
lock(fd2, range1) // => error already locked?
lock(fd3, range1) // stacked lock?
close(fd1)
lock(fd2, range1) // is range1 still locked by fd3 ?
What about fd-passing, will the locks be transferred/shared with the
other process?
metze
next prev parent reply other threads:[~2013-10-12 9:20 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
2013-10-12 11:47 ` Jeff Layton
2013-10-12 18:10 ` [Nfs-ganesha-devel] " Frank Filz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52591461.7070605@samba.org \
--to=metze@samba.org \
--cc=jlayton@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nfs-ganesha-devel@lists.sourceforge.net \
--cc=samba-technical@lists.samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox