From: "Frank Filz" <ffilzlnx@mindspring.com>
To: "'Jeff Layton'" <jlayton@redhat.com>
Cc: linux-fsdevel@vger.kernel.org,
nfs-ganesha-devel@lists.sourceforge.net,
samba-technical@lists.samba.org, linux-kernel@vger.kernel.org
Subject: RE: [Nfs-ganesha-devel] [PATCH v3 5/6] locks: report l_pid as -1 for FL_FILE_PVT locks
Date: Tue, 10 Dec 2013 11:41:04 -0800 [thread overview]
Message-ID: <029801cef5df$c49a6d10$4dcf4730$@mindspring.com> (raw)
In-Reply-To: <20131210143155.147c6a55@tlielax.poochiereds.net>
> On Tue, 10 Dec 2013 14:17:34 -0500
> Jeff Layton <jlayton@redhat.com> wrote:
>
> > FL_FILE_PVT locks are no longer tied to a particular pid, and are
> > instead inheritable by child processes. Report a l_pid of '-1' for
> > these sorts of locks since the pid is somewhat meaningless for them.
> >
> > This precedent comes from FreeBSD. There, POSIX and flock() locks can
> > conflict with one another. If fcntl(F_GETLK, ...) returns a lock set
> > with flock() then the l_pid member cannot be a process ID because the
> > lock is not held by a process as such.
> >
> > Signed-off-by: Jeff Layton <jlayton@redhat.com>
> > ---
> > fs/locks.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/fs/locks.c b/fs/locks.c
> > index e163a30..5372ddd 100644
> > --- a/fs/locks.c
> > +++ b/fs/locks.c
> > @@ -1899,7 +1899,7 @@ EXPORT_SYMBOL_GPL(vfs_test_lock);
> >
> > static int posix_lock_to_flock(struct flock *flock, struct file_lock
> > *fl) {
> > - flock->l_pid = fl->fl_pid;
> > + flock->l_pid = IS_FILE_PVT(fl) ? -1 : fl->fl_pid;
> > #if BITS_PER_LONG == 32
> > /*
> > * Make sure we can represent the posix lock via @@ -1921,7 +1921,7
> > @@ static int posix_lock_to_flock(struct flock *flock, struct
> > file_lock *fl) #if BITS_PER_LONG == 32 static void
> > posix_lock_to_flock64(struct flock64 *flock, struct file_lock *fl) {
> > - flock->l_pid = fl->fl_pid;
> > + flock->l_pid = IS_FILE_PVT(fl) ? -1 : fl->fl_pid;
> > flock->l_start = fl->fl_start;
> > flock->l_len = fl->fl_end == OFFSET_MAX ? 0 :
> > fl->fl_end - fl->fl_start + 1;
>
> While I think this behavior is reasonable, I do wonder if we ought to
consider
> more changes to how F_GETLK works. Currently the F_GETLK code won't
> handle the new l_type values, but maybe it should...
>
> For instance, if there is a conflicting lock, and the F_GETLK caller
specified
> F_RDLCKP or F_WRLCKP, might it make sense to report the l_type on the
> conflicting lock as F_RDLCKP or F_WRLCKP if that conflicting lock is also
a *P
> type?
>
> ...or maybe we should consider a new F_GETLKP cmd value, and a new
> expanded struct flock that gives more info. The pid is already somewhat
> meaningless with this sort of lock. Perhaps we could obfuscate the
fl_owner
> value and report that instead? What other sorts of info would be useful to
> programs that intend to use these new interfaces?
I always wonder if anyone actually uses the conflicting lock information...
I think returning the lock type as F_RDLCK or F_WRLCK is fine, but maybe an
extended F_GETLKP could report the extended type. For Ganesha, we wouldn't
use the extended type since the NFS protocol has no concept of separate
private and non-private locks (all NFS locks are "private" to the specified
owner in the request). The pid is also not that useful to Ganesha.
Frank
WARNING: multiple messages have this Message-ID (diff)
From: "Frank Filz" <ffilzlnx@mindspring.com>
To: "'Jeff Layton'" <jlayton@redhat.com>
Cc: <linux-fsdevel@vger.kernel.org>,
<nfs-ganesha-devel@lists.sourceforge.net>,
<samba-technical@lists.samba.org>, <linux-kernel@vger.kernel.org>
Subject: RE: [Nfs-ganesha-devel] [PATCH v3 5/6] locks: report l_pid as -1 for FL_FILE_PVT locks
Date: Tue, 10 Dec 2013 11:41:04 -0800 [thread overview]
Message-ID: <029801cef5df$c49a6d10$4dcf4730$@mindspring.com> (raw)
In-Reply-To: <20131210143155.147c6a55@tlielax.poochiereds.net>
> On Tue, 10 Dec 2013 14:17:34 -0500
> Jeff Layton <jlayton@redhat.com> wrote:
>
> > FL_FILE_PVT locks are no longer tied to a particular pid, and are
> > instead inheritable by child processes. Report a l_pid of '-1' for
> > these sorts of locks since the pid is somewhat meaningless for them.
> >
> > This precedent comes from FreeBSD. There, POSIX and flock() locks can
> > conflict with one another. If fcntl(F_GETLK, ...) returns a lock set
> > with flock() then the l_pid member cannot be a process ID because the
> > lock is not held by a process as such.
> >
> > Signed-off-by: Jeff Layton <jlayton@redhat.com>
> > ---
> > fs/locks.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/fs/locks.c b/fs/locks.c
> > index e163a30..5372ddd 100644
> > --- a/fs/locks.c
> > +++ b/fs/locks.c
> > @@ -1899,7 +1899,7 @@ EXPORT_SYMBOL_GPL(vfs_test_lock);
> >
> > static int posix_lock_to_flock(struct flock *flock, struct file_lock
> > *fl) {
> > - flock->l_pid = fl->fl_pid;
> > + flock->l_pid = IS_FILE_PVT(fl) ? -1 : fl->fl_pid;
> > #if BITS_PER_LONG == 32
> > /*
> > * Make sure we can represent the posix lock via @@ -1921,7 +1921,7
> > @@ static int posix_lock_to_flock(struct flock *flock, struct
> > file_lock *fl) #if BITS_PER_LONG == 32 static void
> > posix_lock_to_flock64(struct flock64 *flock, struct file_lock *fl) {
> > - flock->l_pid = fl->fl_pid;
> > + flock->l_pid = IS_FILE_PVT(fl) ? -1 : fl->fl_pid;
> > flock->l_start = fl->fl_start;
> > flock->l_len = fl->fl_end == OFFSET_MAX ? 0 :
> > fl->fl_end - fl->fl_start + 1;
>
> While I think this behavior is reasonable, I do wonder if we ought to
consider
> more changes to how F_GETLK works. Currently the F_GETLK code won't
> handle the new l_type values, but maybe it should...
>
> For instance, if there is a conflicting lock, and the F_GETLK caller
specified
> F_RDLCKP or F_WRLCKP, might it make sense to report the l_type on the
> conflicting lock as F_RDLCKP or F_WRLCKP if that conflicting lock is also
a *P
> type?
>
> ...or maybe we should consider a new F_GETLKP cmd value, and a new
> expanded struct flock that gives more info. The pid is already somewhat
> meaningless with this sort of lock. Perhaps we could obfuscate the
fl_owner
> value and report that instead? What other sorts of info would be useful to
> programs that intend to use these new interfaces?
I always wonder if anyone actually uses the conflicting lock information...
I think returning the lock type as F_RDLCK or F_WRLCK is fine, but maybe an
extended F_GETLKP could report the extended type. For Ganesha, we wouldn't
use the extended type since the NFS protocol has no concept of separate
private and non-private locks (all NFS locks are "private" to the specified
owner in the request). The pid is also not that useful to Ganesha.
Frank
next prev parent reply other threads:[~2013-12-10 19:41 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-10 19:17 [PATCH v3 0/6] locks: implement "filp-private" (aka UNPOSIX) locks Jeff Layton
2013-12-10 19:17 ` Jeff Layton
2013-12-10 19:17 ` [PATCH v3 1/6] locks: consolidate common code in the flock_to_posix_lock routines Jeff Layton
2013-12-10 19:17 ` Jeff Layton
2013-12-10 21:22 ` J. Bruce Fields
2013-12-10 21:22 ` J. Bruce Fields
2013-12-10 23:22 ` J. Bruce Fields
2013-12-11 11:18 ` Jeff Layton
2013-12-11 11:18 ` Jeff Layton
2013-12-11 14:37 ` J. Bruce Fields
2013-12-11 15:19 ` J. Bruce Fields
2013-12-11 16:54 ` Jeff Layton
2013-12-11 16:54 ` Jeff Layton
2013-12-11 16:59 ` J. Bruce Fields
2013-12-11 18:09 ` Jeff Layton
2013-12-11 18:09 ` Jeff Layton
2013-12-11 19:07 ` Jeff Layton
2013-12-11 22:56 ` J. Bruce Fields
2013-12-11 22:57 ` J. Bruce Fields
2013-12-12 10:43 ` Jeff Layton
2013-12-12 10:43 ` Jeff Layton
2013-12-12 10:44 ` Jeff Layton
2014-01-05 20:39 ` J. Bruce Fields
2014-01-05 20:39 ` J. Bruce Fields
2014-01-05 20:42 ` [PATCH] locks: fix posix lock range overflow handling J. Bruce Fields
2014-01-05 20:42 ` J. Bruce Fields
2013-12-10 19:17 ` [PATCH v3 2/6] locks: consolidate checks for compatible filp->f_mode values in setlk handlers Jeff Layton
2013-12-10 19:17 ` Jeff Layton
2013-12-10 19:17 ` [PATCH v3 3/6] locks: rename locks_remove_flock to locks_remove_file Jeff Layton
2013-12-10 19:17 ` Jeff Layton
2013-12-10 19:17 ` [PATCH v3 4/6] locks: show private lock types in /proc/locks Jeff Layton
2013-12-10 19:17 ` Jeff Layton
2013-12-10 19:17 ` [PATCH v3 5/6] locks: report l_pid as -1 for FL_FILE_PVT locks Jeff Layton
2013-12-10 19:17 ` Jeff Layton
2013-12-10 19:31 ` Jeff Layton
2013-12-10 19:31 ` Jeff Layton
2013-12-10 19:41 ` Frank Filz [this message]
2013-12-10 19:41 ` [Nfs-ganesha-devel] " Frank Filz
2013-12-10 19:57 ` Jeff Layton
2013-12-10 19:57 ` Jeff Layton
2013-12-10 19:17 ` [PATCH v3 6/6] locks: add new "private" lock type that is owned by the filp Jeff Layton
2013-12-17 13:31 ` Jeff Layton
2013-12-17 13:37 ` Christoph Hellwig
2013-12-17 13:50 ` Jeff Layton
2013-12-17 13:50 ` Jeff Layton
2013-12-10 19:30 ` [Nfs-ganesha-devel] [PATCH v3 0/6] locks: implement "filp-private" (aka UNPOSIX) locks 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='029801cef5df$c49a6d10$4dcf4730$@mindspring.com' \
--to=ffilzlnx@mindspring.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.