From: Alexander Aring <aahringo@redhat.com>
To: teigland@redhat.com
Cc: gfs2@lists.linux.dev, aahringo@redhat.com
Subject: [PATCHv4 dlm/next 00/15] dlm: bring message parsing to softirq context
Date: Tue, 2 Apr 2024 15:17:55 -0400 [thread overview]
Message-ID: <20240402191810.1932939-1-aahringo@redhat.com> (raw)
Hi,
this is version 4 of my attempt to bring dlm message parsing to softirq
context. This will "minimal" improve the dlm message parsing that is
still message after message parsing. There is still a context switch
involed that is the dlm callback workqueue. This patch mostly have the
effect that we call "queue_work()" more often. In future we will get
rid of the dlm callback workqueue and call the DLM user callback
directly in the dlm message processing softirq context. However this
requires that DLM users adapt the changes and signal this capability
over a new lockspace flag.
- Alex
changes since v4:
- add still "dlm: Simplify the allocation of slab caches in
dlm_lowcomms_msg_cache_create" that was forgotten in the last
patch series.
- update commit message to hopefully more clear
- use new WQ_BH instead of tasklets
- use trylock and return -EAGAIN if debugfs cannot access waiters
due recovery is going on
- move clear of root_list in its own goto label instead doing it
when its already cleared
- introduce dlm_refcount_dec_and_lock_bh() that hopefully can
be later moved into refcount code instead of
local_bh_disable/enable all the time
changes since v3:
- add patches that got meanwhile on the mailinglist to resend them.
- add "remove schedule in dlm receive path" to remove a schedule()
in the dlm msg processing path.
- change commit message of "dlm: do dlm message processing in softirq
context" to mention the
changes since v2:
I changed in v2 that we split the root_list to root_list and a per
lockspace masters list. The root_list can be used as a stack list
variable in ls_recover() as it's only used for recovery handling. The
masters list is somehow special because it is being used for other dlm
nodes to dump the nodes master rsbs. The current implementation
guarantees that this happens in a very special part of the recovery
handling by using a kind of distributed cluster barriers. I added more
sanity checks for this handling and a more per node based recovery log
mechanism. There is also a TODO that describes we should keep track of
all masters rsb while lockspace locking handling and not create them
while recovery handling which I think should improve the handling to
maybe get rid of those barriers.
Alexander Aring (14):
dlm: remove allocation parameter in msg allocation
dlm: switch to GFP_ATOMIC in dlm allocations
dlm: move root_list functionality to recover.c
dlm: move master dir dump to own list
dlm: move root_list to ls_recover() stack
dlm: implement directory dump context
dlm: drop holding waiters mutex in waiters recovery
dlm: convert ls_waiters_mutex to spinlock
dlm: convert res_lock to spinlock
dlm: make requestqueue handling non sleepable
dlm: ls_recv_active semaphore to rwlock
dlm: remove schedule in dlm receive path
dlm: convert message parsing locks to disable bh
dlm: do dlm message processing in softirq context
Kunwu Chan (1):
dlm: Simplify the allocation of slab caches in
dlm_lowcomms_msg_cache_create
fs/dlm/ast.c | 12 +-
fs/dlm/debug_fs.c | 41 ++++---
fs/dlm/dir.c | 147 +++++++++++++++++++----
fs/dlm/dir.h | 3 +-
fs/dlm/dlm_internal.h | 20 ++--
fs/dlm/lock.c | 271 +++++++++++++++++++++++-------------------
fs/dlm/lock.h | 7 +-
fs/dlm/lockspace.c | 65 +++++-----
fs/dlm/lowcomms.c | 62 ++++++----
fs/dlm/lowcomms.h | 5 +-
fs/dlm/member.c | 23 ++--
fs/dlm/memory.c | 14 +--
fs/dlm/memory.h | 4 +-
fs/dlm/midcomms.c | 64 +++++-----
fs/dlm/midcomms.h | 3 +-
fs/dlm/rcom.c | 33 +++--
fs/dlm/recover.c | 126 ++++++--------------
fs/dlm/recover.h | 10 +-
fs/dlm/recoverd.c | 142 ++++++++++++++++++----
fs/dlm/requestqueue.c | 43 ++-----
fs/dlm/user.c | 32 ++---
21 files changed, 647 insertions(+), 480 deletions(-)
--
2.43.0
next reply other threads:[~2024-04-02 19:18 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-02 19:17 Alexander Aring [this message]
2024-04-02 19:17 ` [PATCHv4 dlm/next 01/15] dlm: Simplify the allocation of slab caches in dlm_lowcomms_msg_cache_create Alexander Aring
2024-04-02 19:17 ` [PATCHv4 dlm/next 02/15] dlm: remove allocation parameter in msg allocation Alexander Aring
2024-04-02 19:17 ` [PATCHv4 dlm/next 03/15] dlm: switch to GFP_ATOMIC in dlm allocations Alexander Aring
2024-04-02 19:17 ` [PATCHv4 dlm/next 04/15] dlm: move root_list functionality to recover.c Alexander Aring
2024-04-02 19:18 ` [PATCHv4 dlm/next 05/15] dlm: move master dir dump to own list Alexander Aring
2024-04-02 19:18 ` [PATCHv4 dlm/next 06/15] dlm: move root_list to ls_recover() stack Alexander Aring
2024-04-02 19:18 ` [PATCHv4 dlm/next 07/15] dlm: implement directory dump context Alexander Aring
2024-04-02 19:18 ` [PATCHv4 dlm/next 08/15] dlm: drop holding waiters mutex in waiters recovery Alexander Aring
2024-04-02 19:18 ` [PATCHv4 dlm/next 09/15] dlm: convert ls_waiters_mutex to spinlock Alexander Aring
2024-04-02 19:18 ` [PATCHv4 dlm/next 10/15] dlm: convert res_lock " Alexander Aring
2024-04-02 19:18 ` [PATCHv4 dlm/next 11/15] dlm: make requestqueue handling non sleepable Alexander Aring
2024-04-02 19:18 ` [PATCHv4 dlm/next 12/15] dlm: ls_recv_active semaphore to rwlock Alexander Aring
2024-04-02 19:18 ` [PATCHv4 dlm/next 13/15] dlm: remove schedule in dlm receive path Alexander Aring
2024-04-02 19:18 ` [PATCHv4 dlm/next 14/15] dlm: convert message parsing locks to disable bh Alexander Aring
2024-04-02 19:18 ` [PATCHv4 dlm/next 15/15] dlm: do dlm message processing in softirq context Alexander Aring
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=20240402191810.1932939-1-aahringo@redhat.com \
--to=aahringo@redhat.com \
--cc=gfs2@lists.linux.dev \
--cc=teigland@redhat.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