From: Stefan Metzmacher <metze@samba.org>
To: linux-cifs@vger.kernel.org, samba-technical@lists.samba.org
Cc: metze@samba.org, Steve French <smfrench@gmail.com>,
Tom Talpey <tom@talpey.com>, Long Li <longli@microsoft.com>,
Namjae Jeon <linkinjeon@kernel.org>
Subject: [PATCH 00/10] improve smbdirect_mr_io lifetime
Date: Sun, 12 Oct 2025 21:10:20 +0200 [thread overview]
Message-ID: <cover.1760295528.git.metze@samba.org> (raw)
Hi,
these patches improve and simplify our handling of
smbdirect_mr_io structures and their lifetime.
smbd_register_mr() returns a pointer to struct smbdirect_mr_io
and smbd_deregister_mr() gives the pointer back.
But currently the memory itself is managed by the connection
(struct smbdirect_socket) and smbd_destroy() has a strange
wait loop in order to wait for smbd_deregister_mr() being
called. It means code in smbd_destroy() is aware of
the server mutex in the generic smb client handling above
the transport layer.
These patches do some cleanups and fixes before changing
the logic to use a kref and a mutex in order to allow
smbd_deregister_mr() being called after smbd_destroy()
as the memory of smbdirect_mr_io will stay in memory
but will be detached from the connection.
This makes the code independent of cifs_server_[un]lock()
and will allow us to move more smbdirect code into common
functions (shared between client and server).
I think these should go into 6.18.
Stefan Metzmacher (10):
smb: smbdirect: introduce smbdirect_mr_io.{kref,mutex} and
SMBDIRECT_MR_DISABLED
smb: client: change smbd_deregister_mr() to return void
smb: client: let destroy_mr_list() call list_del(&mr->list)
smb: client: let destroy_mr_list() remove locked from the list
smb: client: improve logic in allocate_mr_list()
smb: client: improve logic in smbd_register_mr()
smb: client: improve logic in smbd_deregister_mr()
smb: client: call ib_dma_unmap_sg if mr->sgt.nents is not 0
smb: client: let destroy_mr_list() call ib_dereg_mr() before
ib_dma_unmap_sg()
smb: client: let destroy_mr_list() keep smbdirect_mr_io memory if
registered
fs/smb/client/smbdirect.c | 312 ++++++++++++++-------
fs/smb/client/smbdirect.h | 2 +-
fs/smb/common/smbdirect/smbdirect_socket.h | 11 +-
3 files changed, 224 insertions(+), 101 deletions(-)
--
2.43.0
next reply other threads:[~2025-10-12 19:10 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-12 19:10 Stefan Metzmacher [this message]
2025-10-12 19:10 ` [PATCH 01/10] smb: smbdirect: introduce smbdirect_mr_io.{kref,mutex} and SMBDIRECT_MR_DISABLED Stefan Metzmacher
2025-10-12 19:10 ` [PATCH 02/10] smb: client: change smbd_deregister_mr() to return void Stefan Metzmacher
2025-10-12 19:10 ` [PATCH 03/10] smb: client: let destroy_mr_list() call list_del(&mr->list) Stefan Metzmacher
2025-10-12 19:10 ` [PATCH 04/10] smb: client: let destroy_mr_list() remove locked from the list Stefan Metzmacher
2025-10-12 19:10 ` [PATCH 05/10] smb: client: improve logic in allocate_mr_list() Stefan Metzmacher
2025-10-12 19:10 ` [PATCH 06/10] smb: client: improve logic in smbd_register_mr() Stefan Metzmacher
2025-10-12 19:10 ` [PATCH 07/10] smb: client: improve logic in smbd_deregister_mr() Stefan Metzmacher
2025-10-12 19:10 ` [PATCH 08/10] smb: client: call ib_dma_unmap_sg if mr->sgt.nents is not 0 Stefan Metzmacher
2025-10-12 19:10 ` [PATCH 09/10] smb: client: let destroy_mr_list() call ib_dereg_mr() before ib_dma_unmap_sg() Stefan Metzmacher
2025-10-12 19:10 ` [PATCH 10/10] smb: client: let destroy_mr_list() keep smbdirect_mr_io memory if registered Stefan Metzmacher
2025-10-15 7:20 ` Stefan Metzmacher
2025-10-15 12:47 ` Steve French
2025-10-13 3:05 ` [PATCH 00/10] improve smbdirect_mr_io lifetime Steve French
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=cover.1760295528.git.metze@samba.org \
--to=metze@samba.org \
--cc=linkinjeon@kernel.org \
--cc=linux-cifs@vger.kernel.org \
--cc=longli@microsoft.com \
--cc=samba-technical@lists.samba.org \
--cc=smfrench@gmail.com \
--cc=tom@talpey.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.