All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@redhat.com>
To: Trond Myklebust <trondmy@primarydata.com>
Cc: Schumaker Anna <anna.schumaker@netapp.com>,
	List Linux NFS Mailing <linux-nfs@vger.kernel.org>,
	Fields Bruce James <bfields@fieldses.org>
Subject: Re: [PATCH v3 2/9] nfs: check for POSIX lock capability on server even for flock locks
Date: Fri, 16 Sep 2016 17:46:02 -0400	[thread overview]
Message-ID: <1474062362.13386.13.camel@redhat.com> (raw)
In-Reply-To: <AEF00C6F-ECDD-4292-BDC2-A635D4EBB1B4@primarydata.com>

On Fri, 2016-09-16 at 21:14 +0000, Trond Myklebust wrote:
> > 
> > > > On Sep 16, 2016, at 16:27, Jeff Layton <jlayton@redhat.com> wrote:
> > 
> > We may end up in here with a FL_FLOCK lock request. We translate those
> > to whole-file NFSv4 locks and send them on to the server, so we need to
> > verify that the server supports them no matter what sort of lock request
> > this is.
> > 
> > > > Signed-off-by: Jeff Layton <jlayton@redhat.com>
> > ---
> > fs/nfs/nfs4proc.c | 3 +--
> > 1 file changed, 1 insertion(+), 2 deletions(-)
> > 
> > diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> > index 9d38366666f4..a0f25185c78c 100644
> > --- a/fs/nfs/nfs4proc.c
> > +++ b/fs/nfs/nfs4proc.c
> > @@ -6135,8 +6135,7 @@ static int _nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock
> > 	unsigned char fl_flags = request->fl_flags;
> > 	int status = -ENOLCK;
> > 
> > > > -	if ((fl_flags & FL_POSIX) &&
> > > > -			!test_bit(NFS_STATE_POSIX_LOCKS, &state->flags))
> > > > +	if (!test_bit(NFS_STATE_POSIX_LOCKS, &state->flags))
> > > > 		goto out;
> > 	/* Is this a delegated open? */
> > 	status = nfs4_set_lock_state(state, request);
> > -- 
> > 2.7.4
> 
> The ability to support FL_FLOCK locks does not depend on the server’s
> support for POSIX locking semantics. FL_FLOCK can also use stacked
> lock semantics, precisely because they always cover the whole file.

Oh! I had always thought this flags absence basically meant "I don't
support file locking at all, so don't bother sending any LOCK
requests". Now that I look though, all RFC5661 says is:


   o  OPEN4_RESULT_LOCKTYPE_POSIX indicates that the server's byte-range
      locking behavior supports the complete set of POSIX locking
      techniques [24].  From this, the client can choose to manage byte-
      range locking state in a way to handle a mismatch of byte-range
      locking management.

If this flag isn't there, I guess we can't infer anything about how the
server's locks are implemented. That's just super.

So, ok. If you think this logic is more correct as-is, then I'm fine
with dropping this patch. This check gets moved in a later patch
though, so I'll need to fix that up as well.

-- 
Jeff Layton <jlayton@redhat.com>

  reply	other threads:[~2016-09-16 21:46 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-16 20:27 [PATCH v3 0/9] nfs: add CB_NOTIFY_LOCK support to nfs client Jeff Layton
2016-09-16 20:27 ` [PATCH v3 1/9] nfs: eliminate pointless and confusing do_vfs_lock wrappers Jeff Layton
2016-09-16 20:27 ` [PATCH v3 2/9] nfs: check for POSIX lock capability on server even for flock locks Jeff Layton
2016-09-16 21:14   ` Trond Myklebust
2016-09-16 21:46     ` Jeff Layton [this message]
2016-09-16 21:59       ` Trond Myklebust
2016-09-16 20:27 ` [PATCH v3 3/9] nfs: use safe, interruptible sleeps when waiting to retry LOCK Jeff Layton
2016-09-16 20:27 ` [PATCH v3 4/9] nfs: add a new NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK constant Jeff Layton
2016-09-16 20:27 ` [PATCH v3 5/9] nfs: track whether server sets MAY_NOTIFY_LOCK flag Jeff Layton
2016-09-16 20:27 ` [PATCH v3 6/9] nfs: add handling for CB_NOTIFY_LOCK in client Jeff Layton
2016-09-16 20:27 ` [PATCH v3 7/9] nfs: move nfs4_set_lock_state call into caller Jeff Layton
2016-09-16 20:27 ` [PATCH v3 8/9] nfs: move nfs4 lock retry attempt loop to a separate function Jeff Layton
2016-09-16 21:20   ` Trond Myklebust
2016-09-16 21:47     ` Jeff Layton
2016-09-16 20:27 ` [PATCH v3 9/9] nfs: add code to allow client to wait on lock callbacks Jeff Layton

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=1474062362.13386.13.camel@redhat.com \
    --to=jlayton@redhat.com \
    --cc=anna.schumaker@netapp.com \
    --cc=bfields@fieldses.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=trondmy@primarydata.com \
    /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.