Linux-CIFS Archive mirror
 help / color / mirror / Atom feed
From: Steve French <smfrench@gmail.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Namjae Jeon <linkinjeon@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	 CIFS <linux-cifs@vger.kernel.org>
Subject: [GIT PULL] smbdirect ksmbd and cifs changes
Date: Thu, 16 Apr 2026 10:03:47 -0500	[thread overview]
Message-ID: <CAH2r5mu2+PGJER79PJpPVCysoEEgCsyuzuCKCD9LzZSHQnhOSQ@mail.gmail.com> (raw)

Please pull the following changes since commit
048091722259b6e8d2ef3b138b0c121a2afabe61:

  Merge tag 'v7.1-rc-part1-ksmbd-srv-fixes' of
git://git.samba.org/ksmbd (2026-04-15 19:14:01 -0700)

are available in the Git repository at:

  git://git.samba.org/ksmbd.git tags/v7.1-rc-part1-smbdirect-fixes

for you to fetch changes up to d09a040c186a2083b1cfa9c3c112782ce4b1f6d4:

  smb: smbdirect: let smbdirect_connection_deregister_mr_io unlock
while waiting (2026-04-15 21:58:24 -0500)

----------------------------------------------------------------
Move smbdirect server and client code to common
- temporary use of smbdirect_all_c_files.c to allow micro steps
- factor out common functions into a smbdirect.ko.
- convert cifs.ko to use smbdirect.ko
- convert ksmbd.ko to use smbdirect.ko
- let smbdirect.ko use global workqueues
- move ib_client logic from ksmbd.ko into smbdirect.ko
- remove smbdirect_all_c_files.c hack again
- some locking and teardown related fixes on top
----------------------------------------------------------------
Stefan Metzmacher (145):
      smb: smbdirect: introduce smbdirect_all_c_files.c
      smb: smbdirect: introduce smbdirect_internal.h
      smb: client: include smbdirect_all_c_files.c
      smb: server: include smbdirect_all_c_files.c
      smb: smbdirect: introduce smbdirect_socket.c to be filled
      smb: smbdirect: introduce smbdirect_socket_prepare_create()
      smb: smbdirect: introduce smbdirect_socket_set_logging()
      smb: smbdirect: introduce smbdirect_socket_wake_up_all()
      smb: smbdirect: introduce smbdirect_socket_cleanup_work()
      smb: smbdirect: introduce
smbdirect_socket_schedule_cleanup[{_lvl,_status}]()
      smb: smbdirect: introduce smbdirect_connection.c to be filled
      smb: smbdirect: introduce smbdirect_connection_{get,put}_recv_io()
      smb: smbdirect: introduce
smbdirect_connection_reassembly_{append,first}_recv_io()
      smb: smbdirect: introduce smbdirect_connection_idle_timer_work()
      smb: smbdirect: set SMBDIRECT_KEEPALIVE_NONE before
disable_delayed_work(&sc->idle.timer_work);
      smb: smbdirect: introduce smbdirect_frwr_is_supported()
      smb: smbdirect: introduce smbdirect_socket.{send,recv}_io.mem.gfp_mask
      smb: smbdirect: introduce smbdirect_connection_{alloc,free}_send_io()
      smb: smbdirect: introduce smbdirect_connection_send_io_done()
      smb: smbdirect: introduce
smbdirect_connection_{create,destroy}_mem_pools()
      smb: smbdirect: introduce smbdirect_map_sges_from_iter() and
helper functions
      smb: smbdirect: introduce smbdirect_connection_qp_event_handler()
      smb: smbdirect: introduce smbdirect_connection_negotiate_rdma_resources()
      smb: smbdirect: introduce smbdirect_connection_{create,destroy}_qp()
      smb: smbdirect: introduce smbdirect_connection_post_recv_io()
      smb: smbdirect: introduce smbdirect_connection_recv_io_refill_work()
      smb: smbdirect: split out smbdirect_connection_recv_io_refill()
      smb: smbdirect: introduce smbdirect_get_buf_page_count()
      smb: smbdirect: introduce smbdirect_socket_wait_for_credits()
      smb: smbdirect: introduce smbdirect_mr.c with client mr code
      smb: smbdirect: introduce smbdirect_rw.c with server rw code
      smb: smbdirect: define SMBDIRECT_MIN_{RECEIVE,FRAGMENTED}_SIZE
      smb: smbdirect: define SMBDIRECT_RDMA_CM_[RNR_]RETRY
      smb: smbdirect: introduce smbdirect_connection_recv_io_done()
      smb: smbdirect: introduce smbdirect_socket_destroy[_sync]()
      smb: smbdirect: introduce
smbdirect_connection_rdma_{established,event_handler}()
      smb: smbdirect: introduce smbdirect_connection_recvmsg()
      smb: smbdirect: introduce smbdirect_connection_grant_recv_credits()
      smb: smbdirect: introduce smbdirect_connection_request_keep_alive()
      smb: smbdirect: introduce smbdirect_connection_send_iter() and
related functions
      smb: smbdirect: introduce smbdirect_connection_send_immediate_work()
      smb: smbdirect: introduce smbdirect_connection_negotiation_done()
      smb: smbdirect: introduce smbdirect_mr_io_fill_buffer_descriptor()
      smb: smbdirect: introduce smbdirect_connection_legacy_debug_proc_show()
      smb: smbdirect: introduce smbdirect_connection_wait_for_connected()
      smb: smbdirect: introduce smbdirect_connection_is_connected()
      smb: smbdirect: introduce smbdirect_socket_shutdown()
      smb: smbdirect: introduce
smbdirect_socket_init_{new,accepting}() and helpers
      smb: smbdirect: let smbdirect_socket_set_initial_parameters()
call rdma_restrict_node_type()
      smb: smbdirect: introduce smbdirect_connect[_sync]()
      smb: smbdirect: introduce smbdirect_accept_connect_request()
      smb: smbdirect: introduce
smbdirect_socket_create_{kern,accepting}() and
smbdirect_socket_release()
      smb: smbdirect: let smbdirect_socket.h include all headers for
used structures
      smb: smbdirect: let smbdirect_internal.h define pr_fmt without
SMBDIRECT_USE_INLINE_C_FILES
      smb: smbdirect: introduce smbdirect_public.h with prototypes
      smb: smbdirect: provide explicit prototypes for cross .c file functions
      smb: smbdirect: introduce smbdirect_init_send_batch_storage()
      smb: smbdirect: split out smbdirect_accept_negotiate_finish()
      smb: smbdirect: introduce smbdirect_socket_bind()
      smb: smbdirect: introduce smbdirect_socket_{listen,accept}()
      smb: smbdirect: introduce the basic smbdirect.ko
      smb: client: make use of smbdirect_socket_prepare_create()
      smb: client: make use of smbdirect_socket_set_logging()
      smb: client: make use of smbdirect_socket_wake_up_all()
      smb: client: make use of smbdirect_socket_cleanup_work()
      smb: client: make use of smbdirect_socket_schedule_cleanup()
      smb: client: make use of smbdirect_connection_{get,put}_recv_io()
      smb: client: make use of
smbdirect_connection_reassembly_{append,first}_recv_io()
      smb: client: make use of smbdirect_connection_idle_timer_work()
      smb: client: make use of smbdirect_frwr_is_supported()
      smb: client: make use of smbdirect_connection_{alloc,free}_send_io()
      smb: client: make use of smbdirect_connection_send_io_done()
      smb: client: make use of smbdirect_connection_{create,destroy}_mem_pools()
      smb: client: make use of smbdirect_map_sges_from_iter()
      smb: client: make use of smbdirect_connection_qp_event_handler()
      smb: client: make use of smbdirect_connection_negotiate_rdma_resources()
      smb: client: make use of smbdirect_connection_{create,destroy}_qp()
      smb: client: initialize recv_io->cqe.done = recv_done just once
      smb: client: make use of smbdirect_connection_post_recv_io()
      smb: client: make use of smbdirect_connection_recv_io_refill_work()
      smb: client: make use of functions from smbdirect_mr.c
      smb: client: make use of smbdirect_socket_destroy_sync()
      smb: client: make use of smbdirect_connection_recvmsg()
      smb: client: make use of smbdirect_connection_grant_recv_credits()
      smb: client: make use of smbdirect_connection_request_keep_alive()
      smb: client: change smbd_post_send_empty() to void return
      smb: client: let smbd_post_send_iter() get remaining_length and
return data_length
      smb: client: let smbd_post_send_full_iter() get remaining_length
and return data_length
      smb: client: make use of
smbdirect_connection_send_{single_iter,immediate_work}()
      smb: client: introduce and use smbd_mr_fill_buffer_descriptor()
      smb: client: introduce and use smbd_debug_proc_show()
      smb: client: make use of smbdirect_socket_init_new() and
smbdirect_connect_sync()
      smb: client: make use of
smbdirect_socket_create_kern()/smbdirect_socket_release()
      smb: client: only use public smbdirect functions
      smb: client: make use of smbdirect.ko
      smb: server: make use of smbdirect_socket_prepare_create()
      smb: server: make use of smbdirect_socket_set_logging()
      smb: server: make use of smbdirect_socket_wake_up_all()
      smb: server: make use of smbdirect_socket_cleanup_work()
      smb: server: make use of smbdirect_socket_schedule_cleanup()
      smb: server: make use of smbdirect_connection_{get,put}_recv_io()
      smb: server: make use of
smbdirect_connection_reassembly_{append,first}_recv_io()
      smb: server: make use of smbdirect_connection_idle_timer_work()
      smb: server: make use of smbdirect_frwr_is_supported()
      smb: server: make use of smbdirect_connection_{alloc,free}_send_io()
      smb: server: make use of smbdirect_connection_send_io_done()
      smb: server: make use of smbdirect_connection_{create,destroy}_mem_pools()
      smb: server: make use of smbdirect_map_sges_from_iter()
      smb: server: make use of smbdirect_connection_qp_event_handler()
      smb: server: make use of smbdirect_connection_negotiate_rdma_resources()
      smb: server: make use of smbdirect_connection_{create,destroy}_qp()
      smb: server: make use of smbdirect_connection_post_recv_io()
      smb: server: make use of smbdirect_connection_recv_io_refill[_work]()
      smb: server: make use of smbdirect_get_buf_page_count()
      smb: server: make use of smbdirect_socket_wait_for_credits()
      smb: server: make use of functions from smbdirect_rw.c
      smb: server: make use of smbdirect_socket_destroy_sync()
      smb: server: make use of smbdirect_connection_recvmsg()
      smb: server: make use of smbdirect_connection_grant_recv_credits()
      smb: server: make use of smbdirect_connection_request_keep_alive()
      smb: server: move iov_iter_kvec() out of smb_direct_post_send_data()
      smb: server: inline smb_direct_create_header() into
smb_direct_post_send_data()
      smb: server: let smbdirect_map_sges_from_iter() truncate the
message boundary
      smb: server: split out smb_direct_send_iter() out of smb_direct_writev()
      smb: server: let smb_direct_post_send_data() return data_length
      smb: server: make use of smbdirect_connection_send_iter() and
related functions
      smb: server: make use of
smbdirect_{socket_init_accepting,connection_wait_for_connected}()
      smb: server: make use of
smbdirect_socket_create_accepting()/smbdirect_socket_release()
      smb: server: only use public smbdirect functions
      smb: server: make use of smbdirect_socket_{listen,accept}()
      smb: server: remove unused ksmbd_transport_ops.prepare()
      smb: server: make use of smbdirect.ko
      smb: smbdirect: introduce smbdirect_netdev_rdma_capable_mode_type()
      smb: server: make use of smbdirect_netdev_rdma_capable_mode_type()
      smb: smbdirect: wrap rdma_disconnect() in rdma_[un]lock_handler()
      smb: smbdirect: remove unused smbdirect_connection_mr_io_recovery_work()
      smb: smbdirect: prepare use of dedicated workqueues for different steps
      smb: smbdirect: introduce global workqueues
      smb: client: no longer use smbdirect_socket_set_custom_workqueue()
      smb: server: no longer use smbdirect_socket_set_custom_workqueue()
      smb: smbdirect: remove unused SMBDIRECT_USE_INLINE_C_FILES logic
      smb: smbdirect: change
smbdirect_socket_parameters.{initiator_depth,responder_resources} to
__u16
      smb: smbdirect: fix copyright header of smbdirect.h
      smb: smbdirect: fix the logic in smbdirect_socket_destroy_sync()
without an error
      smb: smbdirect: let smbdirect_connection_deregister_mr_io unlock
while waiting

 fs/smb/Kconfig                                 |    1 +
 fs/smb/client/Kconfig                          |    4 +-
 fs/smb/client/cifs_debug.c                     |   67 +-
 fs/smb/client/smb2pdu.c                        |    9 +-
 fs/smb/client/smbdirect.c                      | 3356 ++----------------------
 fs/smb/client/smbdirect.h                      |   19 +-
 fs/smb/common/Makefile                         |    1 +
 fs/smb/common/smbdirect/Kconfig                |    9 +
 fs/smb/common/smbdirect/Makefile               |   18 +
 fs/smb/common/smbdirect/smbdirect.h            |   14 +-
 fs/smb/common/smbdirect/smbdirect_accept.c     |  857 ++++++
 fs/smb/common/smbdirect/smbdirect_connect.c    |  925 +++++++
 fs/smb/common/smbdirect/smbdirect_connection.c | 2181 +++++++++++++++
 fs/smb/common/smbdirect/smbdirect_debug.c      |   88 +
 fs/smb/common/smbdirect/smbdirect_devices.c    |  277 ++
 fs/smb/common/smbdirect/smbdirect_internal.h   |  141 +
 fs/smb/common/smbdirect/smbdirect_listen.c     |  308 +++
 fs/smb/common/smbdirect/smbdirect_main.c       |  121 +
 fs/smb/common/smbdirect/smbdirect_mr.c         |  493 ++++
 fs/smb/common/smbdirect/smbdirect_pdu.h        |    4 +
 fs/smb/common/smbdirect/smbdirect_public.h     |  148 ++
 fs/smb/common/smbdirect/smbdirect_rw.c         |  255 ++
 fs/smb/common/smbdirect/smbdirect_socket.c     |  743 ++++++
 fs/smb/common/smbdirect/smbdirect_socket.h     |  183 +-
 fs/smb/server/Kconfig                          |    5 +-
 fs/smb/server/connection.c                     |    5 -
 fs/smb/server/connection.h                     |    1 -
 fs/smb/server/smb2pdu.c                        |    1 -
 fs/smb/server/transport_rdma.c                 | 3172 +++-------------------
 fs/smb/server/transport_rdma.h                 |    4 +-
 30 files changed, 7353 insertions(+), 6057 deletions(-)
 create mode 100644 fs/smb/common/smbdirect/Kconfig
 create mode 100644 fs/smb/common/smbdirect/Makefile
 create mode 100644 fs/smb/common/smbdirect/smbdirect_accept.c
 create mode 100644 fs/smb/common/smbdirect/smbdirect_connect.c
 create mode 100644 fs/smb/common/smbdirect/smbdirect_connection.c
 create mode 100644 fs/smb/common/smbdirect/smbdirect_debug.c
 create mode 100644 fs/smb/common/smbdirect/smbdirect_devices.c
 create mode 100644 fs/smb/common/smbdirect/smbdirect_internal.h
 create mode 100644 fs/smb/common/smbdirect/smbdirect_listen.c
 create mode 100644 fs/smb/common/smbdirect/smbdirect_main.c
 create mode 100644 fs/smb/common/smbdirect/smbdirect_mr.c
 create mode 100644 fs/smb/common/smbdirect/smbdirect_public.h
 create mode 100644 fs/smb/common/smbdirect/smbdirect_rw.c
 create mode 100644 fs/smb/common/smbdirect/smbdirect_socket.c

-- 
Thanks,

Steve

             reply	other threads:[~2026-04-16 15:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-16 15:03 Steve French [this message]
2026-04-16 15:37 ` [GIT PULL] smbdirect ksmbd and cifs changes Linus Torvalds
2026-04-16 16:46   ` Steve French
2026-04-16 15:42 ` pr-tracker-bot

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=CAH2r5mu2+PGJER79PJpPVCysoEEgCsyuzuCKCD9LzZSHQnhOSQ@mail.gmail.com \
    --to=smfrench@gmail.com \
    --cc=linkinjeon@kernel.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /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).