From: "J. Bruce Fields" <bfields@fieldses.org>
To: Jeff Layton <jlayton@redhat.com>
Cc: trond.myklebust@primarydata.com, anna.schumaker@netapp.com,
linux-nfs@vger.kernel.org
Subject: Re: [PATCH v3 2/5] nfsd: have nfsd4_lock use blocking locks for v4.1+ locks
Date: Sat, 24 Sep 2016 11:02:11 -0400 [thread overview]
Message-ID: <20160924150211.GA19783@fieldses.org> (raw)
In-Reply-To: <1474677824.29585.11.camel@redhat.com>
On Fri, Sep 23, 2016 at 08:43:44PM -0400, Jeff Layton wrote:
> On Fri, 2016-09-23 at 17:19 -0400, J. Bruce Fields wrote:
> > On Fri, Sep 16, 2016 at 04:28:24PM -0400, Jeff Layton wrote:
> > >
> > > Create a new per-lockowner+per-inode structure that contains a
> > > file_lock. Have nfsd4_lock add this structure to the lockowner's list
> > > prior to setting the lock. Then call the vfs and request a blocking lock
> > > (by setting FL_SLEEP). If we get anything besides FILE_LOCK_DEFERRED
> >
> > That doesn't sound right. FILE_LOCK_DEFERRED is a special case for
> > asynchronous locking--it means "I don't know whether there's a conflict
> > or not, it may take a while to check", not "there's a conflict".
> >
> > (Ugh. I apologize for the asynchronous locking code.)
> >
> > --b.
> >
>
> The local file locking code definitely uses this return code to mean
> "This lock is blocked, and I'll call your lm_notify when it's
> unblocked", which is exactly what we rely on here.
>
> There is a place that uses it in the way you mention though, and that is
> when DLM and svc lockd are interacting via dlm_posix_lock(). lockd can't
> be in play here since this is all NFSv4, so I think the code does handle
> this correctly.
Got it, my apologies! I'll read some more....
The patches look fine as far as I can tell.
> That said...maybe should probably think about some way to disambiguate
> those two states in the return code. It is horribly confusing.
Yes.
Honestly maybe the asynchronous dlm case just shouldn't be there. I
remember thinking multithreading lockd would accomplish the same. But
maybe we already have that in the nfsv4 case, in which case who cares.
(Well, except maybe the locking effectively serializes locking anyway, I
haven't looked.)
--b.
next prev parent reply other threads:[~2016-09-24 15:02 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-16 20:28 [PATCH v3 0/5] add CB_NOTIFY_LOCK support to knfsd Jeff Layton
2016-09-16 20:28 ` [PATCH v3 1/5] nfsd: plumb in a CB_NOTIFY_LOCK operation Jeff Layton
2016-09-16 20:28 ` [PATCH v3 2/5] nfsd: have nfsd4_lock use blocking locks for v4.1+ locks Jeff Layton
2016-09-23 21:19 ` J. Bruce Fields
2016-09-24 0:43 ` Jeff Layton
2016-09-24 15:02 ` J. Bruce Fields [this message]
2016-09-24 16:48 ` Jeff Layton
2016-09-16 20:28 ` [PATCH v3 3/5] nfsd: add a LRU list for blocked locks Jeff Layton
2016-09-16 20:28 ` [PATCH v3 4/5] nfs: add a new NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK constant Jeff Layton
2016-09-16 20:28 ` [PATCH v3 5/5] nfsd: set the MAY_NOTIFY_LOCK flag in OPEN replies Jeff Layton
2016-09-23 21:05 ` [PATCH v3 0/5] add CB_NOTIFY_LOCK support to knfsd J. Bruce Fields
2016-09-24 0:48 ` Jeff Layton
2016-09-26 16:03 ` J. Bruce Fields
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=20160924150211.GA19783@fieldses.org \
--to=bfields@fieldses.org \
--cc=anna.schumaker@netapp.com \
--cc=jlayton@redhat.com \
--cc=linux-nfs@vger.kernel.org \
--cc=trond.myklebust@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 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).