From: Alexander Aring <aahringo@redhat.com>
To: linux-nfs@vger.kernel.org
Cc: gfs2@lists.linux.dev, ocfs2-devel@lists.linux.dev,
linux-fsdevel@vger.kernel.org, teigland@redhat.com,
rpeterso@redhat.com, agruenba@redhat.com,
trond.myklebust@hammerspace.com, anna@kernel.org,
chuck.lever@oracle.com, jlayton@kernel.org, aahringo@redhat.com
Subject: [PATCHv2 nfsd/master 0/7] lockd: dlm: async lock request changes
Date: Tue, 12 Sep 2023 17:53:17 -0400 [thread overview]
Message-ID: <20230912215324.3310111-1-aahringo@redhat.com> (raw)
Hi,
I sent this as a PATCH now and drop the RFC. I got some review back from
Jeff Layton and hope I was successful to follow it. There are still
issues with lockd and asynchronous lock request but it will at least not
directly crash when somebody is using nfs on top of GFS2. The issues are
related to cancellation of locks/lockd decides to drop nlm_block for
some reasons while pending request is happening.
I did not change more documentation about the asynchronous lock request
functionality to not confuse users. In my opinion there should be more
documentation about what you SHOULD NOT do with this API. Otherwise I
think the documentation is still correct.
I will send a follow up patch to fsdevel to change all users using
IS_SETLKW() to use FL_SLEEP to determine if it's blocking or
non-blocking and send it to fsdevel as it was recommended. This will
just be a grep and replace patch and look what happens.
- Alex
changes since v2:
- remove B_PENDING_CALLBACK paragraph from commit msg. Was a leftover
and I forgot to update the commit message.
- change function name from export_op_support_safe_async_lock()
to exportfs_lock_op_is_async()
- change flag name from EXPORT_OP_SAFE_ASYNC_LOCK to
EXPORT_OP_ASYNC_LOCK
- add documentation for EXPORT_OP_ASYNC_LOCK to
Documentation/filesystems/nfs/exporting.rst
- add newline between function name and return type of
exportfs_lock_op_is_async()
- remove f_op->lock() check and mention it in
Documentation/filesystems/nfs/exporting.rst to only use it with
filesystems implementing their own ->lock()
- add kdoc for exportfs_lock_op_is_async()
changes since RFC:
- drop the pending callback flag but introduce "lockd: don't call
vfs_lock_file() for pending requests", see patch why I need it.
- drop per nlm_block callback mutex
- change async lock request documentation
- use always FL_SLEEP to determine if it's blocking vs non-blocking in
DLM
Alexander Aring (7):
lockd: introduce safe async lock op
lockd: don't call vfs_lock_file() for pending requests
lockd: fix race in async lock request handling
lockd: add doc to enable EXPORT_OP_ASYNC_LOCK
dlm: use fl_owner from lockd
dlm: use FL_SLEEP to determine blocking vs non-blocking
dlm: implement EXPORT_OP_ASYNC_LOCK
Documentation/filesystems/nfs/exporting.rst | 7 ++++
fs/dlm/plock.c | 20 +++--------
fs/gfs2/export.c | 1 +
fs/lockd/svclock.c | 38 ++++++++++++++-------
fs/locks.c | 12 ++++---
fs/nfsd/nfs4state.c | 10 ++++--
fs/ocfs2/export.c | 1 +
include/linux/exportfs.h | 14 ++++++++
8 files changed, 67 insertions(+), 36 deletions(-)
--
2.31.1
next reply other threads:[~2023-09-12 21:53 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-12 21:53 Alexander Aring [this message]
2023-09-12 21:53 ` [PATCHv2 nfsd/master 1/7] lockd: introduce safe async lock op Alexander Aring
2023-09-12 21:53 ` [PATCHv2 nfsd/master 2/7] lockd: don't call vfs_lock_file() for pending requests Alexander Aring
2023-09-12 21:53 ` [PATCHv2 nfsd/master 3/7] lockd: fix race in async lock request handling Alexander Aring
2023-09-12 21:53 ` [PATCHv2 nfsd/master 4/7] lockd: add doc to enable EXPORT_OP_ASYNC_LOCK Alexander Aring
2023-09-12 21:53 ` [PATCHv2 nfsd/master 5/7] dlm: use fl_owner from lockd Alexander Aring
2023-09-12 21:53 ` [PATCHv2 nfsd/master 6/7] dlm: use FL_SLEEP to determine blocking vs non-blocking Alexander Aring
2023-09-12 21:53 ` [PATCHv2 nfsd/master 7/7] dlm: implement EXPORT_OP_ASYNC_LOCK Alexander Aring
2023-09-14 10:29 ` Jeff Layton
2023-09-13 13:24 ` [PATCHv2 nfsd/master 0/7] lockd: dlm: async lock request changes Chuck Lever III
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=20230912215324.3310111-1-aahringo@redhat.com \
--to=aahringo@redhat.com \
--cc=agruenba@redhat.com \
--cc=anna@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=gfs2@lists.linux.dev \
--cc=jlayton@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=ocfs2-devel@lists.linux.dev \
--cc=rpeterso@redhat.com \
--cc=teigland@redhat.com \
--cc=trond.myklebust@hammerspace.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 read-only IMAP folder(s) and NNTP newsgroup(s).