linux-cifs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 000/142] smb: smbdirect/client/server: make use of common structures
@ 2025-08-25 20:39 Stefan Metzmacher
  2025-08-25 20:39 ` [PATCH v4 001/142] smb: smbdirect: introduce smbdirect_socket.status_wait Stefan Metzmacher
                   ` (143 more replies)
  0 siblings, 144 replies; 154+ messages in thread
From: Stefan Metzmacher @ 2025-08-25 20:39 UTC (permalink / raw)
  To: linux-cifs, samba-technical
  Cc: metze, Steve French, Tom Talpey, Long Li, Namjae Jeon

Hi,

this is the next step towards a common smbdirect layer
between cifs.ko and ksmbd.ko, with the aim to provide
a socket layer for userspace usage at the end of the road.

Note the patchset is based on v6.17-rc3 plus the following
patches from sfrench-cifs-2.6/for-next:
21d14611210d0bdf6b0c6db45c2361e96e6673d4
smb3 client: fix return code mapping of remap_file_range
a21e20edf966db8d3e0e0748a9201fbd62fd961a
smb: client: Fix mount deadlock by avoiding super block iteration in DFS reconnect
plus the client and server fixes for the IRD/ORD negotiation:
https://lore.kernel.org/linux-cifs/20250821093113.36212-1-metze@samba.org/
https://lore.kernel.org/linux-cifs/20250821092751.35815-1-metze@samba.org/
But only the IRD/ORD patches are really required in order to
apply the patchset. It can also be found as branch for-6.18/fs-smb-20250825-v4
in https://git.samba.org/metze/linux/wip.git, see
https://git.samba.org/?p=metze/linux/wip.git;a=shortlog;h=refs/heads/for-6.18/fs-smb-20250825-v4

This patchset introduces more common structures and elements
to struct smbdirect_socket[_parameters]. (Patches 001-018)

The client side is modified in tiny steps in order
to use the new common structures. At the end
struct smbd_connection is only a simple container
arround struct smbdirect_socket. For now I left
it that way in order to avoid changing the smb layer
to use struct smbdirect_socket. In the end I'd like to
expose only an anonymous structure to the smb layer
and struct smbdirect_socket will become a private structure.
(Patches 019-075). In between there are some fixes for
the keepalive and timeout handling.

Note that 047 smb: client: make use of smbdirect_socket.statistics
generates the following warnings from scripts/checkpatch.pl --quiet
 WARNING: quoted string split across lines
 #40: FILE: fs/smb/client/cifs_debug.c:464:
 +               seq_printf(m, "\nDebug count_get_receive_buffer: %llx "
 +                       "count_put_receive_buffer: %llx count_send_empty: %llx",
 
 WARNING: quoted string split across lines
 #47: FILE: fs/smb/client/cifs_debug.c:469:
                 seq_printf(m, "\nRead Queue "
 +                       "count_enqueue_reassembly_queue: %llx "
 
 WARNING: quoted string split across lines
 #48: FILE: fs/smb/client/cifs_debug.c:470:
 +                       "count_enqueue_reassembly_queue: %llx "
 +                       "count_dequeue_reassembly_queue: %llx "

 total: 0 errors, 3 warnings, 83 lines checked
 scripts/checkpatch.pl: FAILED

But I left them in in order to keep the strange style like
the other code before and after...

The server is also changed in tiny steps in order to
make use of the common structures only. Patches 076-142.
We only have this left at the end of the patchset:

   struct smb_direct_transport {
        struct ksmbd_transport  transport;

        struct smbdirect_socket socket;
   };

The server also got patches to implement keepalive and timeout
handling in order to match the client code.

The client patches and server patches are independent
from each other, but both need their own IRD/ORD negotiation
fix plus the common smbdirect patches.

From here I'll start to split out common functions.
In the first step as static __maybe_unused functions in a
common smbdirect_connection.c file that will be included
in client/smbdirect.c and server/transport_rdma.c.
This is strange, but it will allow me to continue in tiny
steps until only common code it used.
If it's too strange I can use a smbdirect_connection.h
and rename it later from .h to .c

At that point I'll introduce an smbdirect.ko and export some
public functions which will replace the include of the .c.
Then I can finally start to add the struct socket/sock glue
in order to provide smbdirect support to userspace.

I used the following xfstests as regression tests:
cifs/001 generic/001 generic/002 generic/005 generic/006 generic/007 generic/010 generic/011

Between cifs.ko against ksmbd.ko via siw.ko and also
the client via siw.ko against Windows 2025 using
a Chelsio T520-BT card. I tested the modules once
before and after the applied patches and also the
combination.

V4:
rebased on v6.17-rc3 and current sfrench-cifs-2.6/for-next
A lot of additional patches are added in order to
use struct smbdirect_socket almost everywhere.

V3:
smbd_disconnect_rdma_work() needed to handle more
than SMBDIRECT_SOCKET_CONNECTED in order to call
rdma_disconnect.

V2:
init_waitqueue_head(&info->status_wait); was moved
to the beginning so that it is correctly initialized
in smbd_create_id().

Stefan Metzmacher (142):
  smb: smbdirect: introduce smbdirect_socket.status_wait
  smb: smbdirect: introduce smbdirect_socket_init()
  smb: smbdirect: introduce smbdirect_socket.disconnect_work
  smb: smbdirect: introduce
    smbdirect_socket.send_io.pending.{count,wait_queue}
  smb: smbdirect: introduce
    smbdirect_socket.send_io.credits.{count,wait_queue}
  smb: smbdirect: introduce struct smbdirect_send_batch
  smb: smbdirect: introduce smbdirect_socket.rw_io.credits
  smb: smbdirect: introduce struct smbdirect_rw_io
  smb: smbdirect: introduce smbdirect_socket.recv_io.{posted,credits}
  smb: smbdirect: introduce
    smbdirect_socket_parameters.{resolve_{addr,route},rdma_connect,negotiate}_timeout_msec
  smb: smbdirect: introduce
    smbdirect_socket_parameters.{initiator_depth,responder_resources}
  smb: smbdirect: introduce smbdirect_socket.rdma.legacy_iwarp
  smb: smbdirect: introduce
    smbdirect_socket.idle.{keepalive,immediate_work,timer_work}
  smb: smbdirect: introduce smbdirect_socket.statistics
  smb: smbdirect: introduce smbdirect_socket.workqueue
  smb: smbdirect: introduce struct smbdirect_mr_io
  smb: smbdirect: introduce smbdirect_socket_parameters.max_frmr_depth
  smb: smbdirect: introduce smbdirect_socket.mr_io.*
  smb: client/smbdirect: replace SMBDIRECT_SOCKET_CONNECTING with more
    detailed states
  smb: client: use status_wait and SMBDIRECT_SOCKET_NEGOTIATE_RUNNING
    for completion
  smb: client: use status_wait and
    SMBDIRECT_SOCKET_RESOLVE_{ADDR,ROUTE}_RUNNING for completion
  smb: client: make use of smbdirect_socket.status_wait
  smb: client: make only use of wake_up[_all]() in smbdirect.c
  smb: client: make use of smbdirect_socket_init()
  smb: client: make use of smbdirect_socket.disconnect_work
  smb: client: make use of
    smbdirect_socket.send_io.pending.{count,wait_queue}
  smb: client: make use of
    smbdirect_socket.send_io.credits.{count,wait_queue}
  smb: client: make sure smbd_disconnect_rdma_work() doesn't run after
    smbd_destroy() took over
  smb: client: use disable[_delayed]_work_sync in smbdirect.c
  smb: client: let smbd_destroy() call
    disable_work_sync(&info->post_send_credits_work)
  smb: client: queue post_recv_credits_work also if the peer raises the
    credit target
  smb: client: make use of ib_wc_status_msg() and skip
    IB_WC_WR_FLUSH_ERR logging
  smb: client: remove info->wait_receive_queues handling in
    smbd_destroy()
  smb: client: limit the range of info->receive_credit_target
  smb: client: count the number of posted recv_io messages in order to
    calculated credits
  smb: client: make use of smbdirect_socket.recv_io.{posted,credits}
  smb: client: remove useless smbd_connection.send_immediate
  smb: client: fill smbdirect_socket_parameters at the beginning and use
    the values from there
  smb: client: make use of
    smbdirect_socket_parameters.{resolve_{addr,route},rdma_connect,negotiate}_timeout_msec
  smb: client: make use of
    smbdirect_socket_parameters.{initiator_depth,responder_resources}
  smb: client: make use of smbdirect_socket.rdma.legacy_iwarp
  smb: client: send empty packets via send_immediate_work
  smb: client: fix smbdirect keep alive handling to match the
    documentation
  smb: client: make use of
    smbdirect_socket.idle.{keepalive,immediate_work,timer_work}
  smb: client: remove unused smbd_connection->protocol
  smb: client: remove unused smbd_connection.count_reassembly_queue
  smb: client: make use of smbdirect_socket.statistics
  smb: client: don't check sc->send_io.pending.count is below
    sp->send_credit_target
  smb: client: move rdma_readwrite_threshold from smbd_connection to
    TCP_Server_Info
  smb: client: make use of smbdirect_socket.workqueue
  smb: client: add and use smbd_get_parameters()
  smb: client: make use of struct smbdirect_mr_io
  smb: client: make use of smbdirect_socket_parameters.max_frmr_depth
  smb: client: make use of smbdirect_socket.mr_io
  smb: client: pass struct smbdirect_socket to
    {get,put}_receive_buffer()
  smb: client: pass struct smbdirect_socket to
    {allocate,destroy}_receive_buffers()
  smb: client: pass struct smbdirect_socket to
    {allocate,destroy}_caches_and_workqueue()
  smb: client: pass struct smbdirect_socket to
    {enqueue,_get_first}_reassembly()
  smb: client: pass struct smbdirect_socket to
    {allocate,destroy}_mr_list()
  smb: client: pass struct smbdirect_socket to
    smbd_disconnect_rdma_connection()
  smb: client: pass struct smbdirect_socket to smbd_post_recv()
  smb: client: pass struct smbdirect_socket to
    manage_credits_prior_sending()
  smb: client: pass struct smbdirect_socket to smbd_post_send()
  smb: client: pass struct smbdirect_socket to
    manage_keep_alive_before_sending()
  smb: client: pass struct smbdirect_socket to smbd_post_send_iter()
  smb: client: pass struct smbdirect_socket to smbd_post_send_empty()
  smb: client: pass struct smbdirect_socket to
    smbd_post_send_full_iter()
  smb: client: pass struct smbdirect_socket to smbd_conn_upcall()
  smb: client: pass struct smbdirect_socket to
    smbd_qp_async_error_upcall()
  smb: client: pass struct smbdirect_socket to smbd_create_id()
  smb: client: pass struct smbdirect_socket to smbd_ia_open()
  smb: client: pass struct smbdirect_socket to
    smbd_post_send_negotiate_req()
  smb: client: pass struct smbdirect_socket to smbd_negotiate()
  smb: client: pass struct smbdirect_socket to get_mr()
  smb: client: remove unused struct smbdirect_socket argument of
    smbd_iter_to_mr()
  smb: server: make use of common smbdirect_pdu.h
  smb: server: make use of common smbdirect.h
  smb: server: make use of common smbdirect_socket
  smb: server: make use of common smbdirect_socket_parameters
  smb: server: make use of smbdirect_socket->recv_io.expected
  smb: server: make use of struct smbdirect_recv_io
  smb: server: make use of smbdirect_socket.recv_io.free.{list,lock}
  smb: server: make use of smbdirect_socket.recv_io.reassembly.*
  smb: server: make use of SMBDIRECT_RECV_IO_MAX_SGE
  smb: server: make use of struct smbdirect_send_io
  smb: server: make use of
    smbdirect_socket.{send,recv}_io.mem.{cache,pool}
  smb: server: make only use of wake_up[_all]() in transport_rdma.c
  smb: server: add a pr_info() when the server starts running
  smb: server: don't use delayed_work for post_recv_credits_work
  smb: server: queue post_recv_credits_work in put_recvmsg() and avoid
    count_avail_recvmsg
  smb: server: make use of smbdirect_socket.status_wait
  smb: server: only turn into SMBDIRECT_SOCKET_CONNECTED when
    negotiation is done
  smb: server: use disable_work_sync in transport_rdma.c
  smb: server: move smb_direct_disconnect_rdma_work() into
    free_transport()
  smb: server: don't wait for info->send_pending == 0 on error
  smb: server: make use of smbdirect_socket_init()
  smb: server: make use of smbdirect_socket.disconnect_work
  smb: server: make use of
    smbdirect_socket.send_io.pending.{count,wait_queue}
  smb: server: make use of
    smbdirect_socket.send_io.credits.{count,wait_queue}
  smb: server: make use of struct smbdirect_send_batch
  smb: server: make use smbdirect_socket.rw_io.credits
  smb: server: make use of struct smbdirect_rw_io
  smb: server: take the recv_credit_target from the negotiate req and
    always limit the range
  smb: server: manage recv credits by counting posted recv_io and
    granted credits
  smb: server: make use of smbdirect_socket.recv_io.{posted,credits}
  smb: server: replace smb_trans_direct_transfort() with SMBD_TRANS()
  smb: server: remove useless casts from KSMBD_TRANS/SMBD_TRANS
  smb: server: pass ksmbd_transport to get_smbd_max_read_write_size()
  smb: server: fill smbdirect_socket_parameters at the beginning and use
    the values from there
  smb: server: make use of
    smbdirect_socket_parameters.negotiate_timeout_msec and change to 5s
  smb: server: make use of
    smbdirect_socket_parameters.{initiator_depth,responder_resources}
  smb: server: make use of smbdirect_socket.rdma.legacy_iwarp
  smb: server: make use of smbdirect_socket.idle.immediate_work
  smb: server: implement correct keepalive and timeout handling for
    smbdirect
  smb: server: make use of smbdirect_socket.workqueue
  smb: server: pass struct smbdirect_socket to {get_free,put}_recvmsg()
  smb: server: pass struct smbdirect_socket to
    smb_direct_{create,destroy}_pools()
  smb: server: pass struct smbdirect_socket to
    smb_direct_get_max_fr_pages()
  smb: server: pass struct smbdirect_socket to smb_direct_init_params()
  smb: server: pass struct smbdirect_socket to
    smb_direct_disconnect_rdma_connection()
  smb: server: pass struct smbdirect_socket to smb_direct_cm_handler()
  smb: server: pass struct smbdirect_socket to
    smb_direct_qpair_handler()
  smb: server: pass struct smbdirect_socket to smb_direct_create_qpair()
  smb: server: pass struct smbdirect_socket to smb_direct_post_recv()
  smb: server: pass struct smbdirect_socket to
    smb_direct_accept_client()
  smb: server: pass struct smbdirect_socket to
    smb_direct_prepare_negotiation()
  smb: server: pass struct smbdirect_socket to smb_direct_connect()
  smb: server: pass struct smbdirect_socket to
    smb_direct_{alloc,free}_sendmsg()
  smb: server: remove unused struct struct smb_direct_transport argument
    from smb_direct_send_ctx_init()
  smb: server: pass struct smbdirect_socket to smb_direct_post_send()
  smb: server: pass struct smbdirect_socket to
    smb_direct_flush_send_list()
  smb: server: pass struct smbdirect_socket to wait_for_credits()
  smb: server: pass struct smbdirect_socket to wait_for_send_credits()
  smb: server: pass struct smbdirect_socket to wait_for_rw_credits()
  smb: server: pass struct smbdirect_socket to calc_rw_credits()
  smb: server: pass struct smbdirect_socket to
    manage_credits_prior_sending()
  smb: server: pass struct smbdirect_socket to
    manage_keep_alive_before_sending()
  smb: server: pass struct smbdirect_socket to
    smb_direct_create_header()
  smb: server: pass struct smbdirect_socket to post_sendmsg()
  smb: server: pass struct smbdirect_socket to
    smb_direct_post_send_data()
  smb: server: pass struct smbdirect_socket to
    {enqueue,get_first}_reassembly()
  smb: server: pass struct smbdirect_socket to
    smb_direct_send_negotiate_response()

 fs/smb/client/cifs_debug.c                 |   48 +-
 fs/smb/client/cifsglob.h                   |    9 +-
 fs/smb/client/file.c                       |   16 +-
 fs/smb/client/smb2ops.c                    |    8 +-
 fs/smb/client/smb2pdu.c                    |    2 +-
 fs/smb/client/smbdirect.c                  |  943 +++++++------
 fs/smb/client/smbdirect.h                  |  104 +-
 fs/smb/common/smbdirect/smbdirect.h        |    7 +
 fs/smb/common/smbdirect/smbdirect_socket.h |  242 +++-
 fs/smb/server/connection.c                 |    4 +-
 fs/smb/server/connection.h                 |   10 +-
 fs/smb/server/server.c                     |    1 +
 fs/smb/server/smb2pdu.c                    |   23 +-
 fs/smb/server/smb2pdu.h                    |    6 -
 fs/smb/server/transport_rdma.c             | 1434 ++++++++++----------
 fs/smb/server/transport_rdma.h             |   45 +-
 16 files changed, 1565 insertions(+), 1337 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 154+ messages in thread

end of thread, other threads:[~2025-09-13  0:03 UTC | newest]

Thread overview: 154+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-25 20:39 [PATCH v4 000/142] smb: smbdirect/client/server: make use of common structures Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 001/142] smb: smbdirect: introduce smbdirect_socket.status_wait Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 002/142] smb: smbdirect: introduce smbdirect_socket_init() Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 003/142] smb: smbdirect: introduce smbdirect_socket.disconnect_work Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 004/142] smb: smbdirect: introduce smbdirect_socket.send_io.pending.{count,wait_queue} Stefan Metzmacher
2025-09-08  8:49   ` [PATCH v4 004/142] smb: smbdirect: introduce smbdirect_socket.send_io.pending.{count, wait_queue} Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 005/142] smb: smbdirect: introduce smbdirect_socket.send_io.credits.{count,wait_queue} Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 006/142] smb: smbdirect: introduce struct smbdirect_send_batch Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 007/142] smb: smbdirect: introduce smbdirect_socket.rw_io.credits Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 008/142] smb: smbdirect: introduce struct smbdirect_rw_io Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 009/142] smb: smbdirect: introduce smbdirect_socket.recv_io.{posted,credits} Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 010/142] smb: smbdirect: introduce smbdirect_socket_parameters.{resolve_{addr,route},rdma_connect,negotiate}_timeout_msec Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 011/142] smb: smbdirect: introduce smbdirect_socket_parameters.{initiator_depth,responder_resources} Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 012/142] smb: smbdirect: introduce smbdirect_socket.rdma.legacy_iwarp Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 013/142] smb: smbdirect: introduce smbdirect_socket.idle.{keepalive,immediate_work,timer_work} Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 014/142] smb: smbdirect: introduce smbdirect_socket.statistics Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 015/142] smb: smbdirect: introduce smbdirect_socket.workqueue Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 016/142] smb: smbdirect: introduce struct smbdirect_mr_io Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 017/142] smb: smbdirect: introduce smbdirect_socket_parameters.max_frmr_depth Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 018/142] smb: smbdirect: introduce smbdirect_socket.mr_io.* Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 019/142] smb: client/smbdirect: replace SMBDIRECT_SOCKET_CONNECTING with more detailed states Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 020/142] smb: client: use status_wait and SMBDIRECT_SOCKET_NEGOTIATE_RUNNING for completion Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 021/142] smb: client: use status_wait and SMBDIRECT_SOCKET_RESOLVE_{ADDR,ROUTE}_RUNNING " Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 022/142] smb: client: make use of smbdirect_socket.status_wait Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 023/142] smb: client: make only use of wake_up[_all]() in smbdirect.c Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 024/142] smb: client: make use of smbdirect_socket_init() Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 025/142] smb: client: make use of smbdirect_socket.disconnect_work Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 026/142] smb: client: make use of smbdirect_socket.send_io.pending.{count,wait_queue} Stefan Metzmacher
2025-09-08  8:53   ` Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 027/142] smb: client: make use of smbdirect_socket.send_io.credits.{count,wait_queue} Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 028/142] smb: client: make sure smbd_disconnect_rdma_work() doesn't run after smbd_destroy() took over Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 029/142] smb: client: use disable[_delayed]_work_sync in smbdirect.c Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 030/142] smb: client: let smbd_destroy() call disable_work_sync(&info->post_send_credits_work) Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 031/142] smb: client: queue post_recv_credits_work also if the peer raises the credit target Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 032/142] smb: client: make use of ib_wc_status_msg() and skip IB_WC_WR_FLUSH_ERR logging Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 033/142] smb: client: remove info->wait_receive_queues handling in smbd_destroy() Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 034/142] smb: client: limit the range of info->receive_credit_target Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 035/142] smb: client: count the number of posted recv_io messages in order to calculated credits Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 036/142] smb: client: make use of smbdirect_socket.recv_io.{posted,credits} Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 037/142] smb: client: remove useless smbd_connection.send_immediate Stefan Metzmacher
2025-08-25 20:39 ` [PATCH v4 038/142] smb: client: fill smbdirect_socket_parameters at the beginning and use the values from there Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 039/142] smb: client: make use of smbdirect_socket_parameters.{resolve_{addr,route},rdma_connect,negotiate}_timeout_msec Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 040/142] smb: client: make use of smbdirect_socket_parameters.{initiator_depth,responder_resources} Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 041/142] smb: client: make use of smbdirect_socket.rdma.legacy_iwarp Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 042/142] smb: client: send empty packets via send_immediate_work Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 043/142] smb: client: fix smbdirect keep alive handling to match the documentation Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 044/142] smb: client: make use of smbdirect_socket.idle.{keepalive,immediate_work,timer_work} Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 045/142] smb: client: remove unused smbd_connection->protocol Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 046/142] smb: client: remove unused smbd_connection.count_reassembly_queue Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 047/142] smb: client: make use of smbdirect_socket.statistics Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 048/142] smb: client: don't check sc->send_io.pending.count is below sp->send_credit_target Stefan Metzmacher
2025-09-08  9:03   ` Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 049/142] smb: client: move rdma_readwrite_threshold from smbd_connection to TCP_Server_Info Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 050/142] smb: client: make use of smbdirect_socket.workqueue Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 051/142] smb: client: add and use smbd_get_parameters() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 052/142] smb: client: make use of struct smbdirect_mr_io Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 053/142] smb: client: make use of smbdirect_socket_parameters.max_frmr_depth Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 054/142] smb: client: make use of smbdirect_socket.mr_io Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 055/142] smb: client: pass struct smbdirect_socket to {get,put}_receive_buffer() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 056/142] smb: client: pass struct smbdirect_socket to {allocate,destroy}_receive_buffers() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 057/142] smb: client: pass struct smbdirect_socket to {allocate,destroy}_caches_and_workqueue() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 058/142] smb: client: pass struct smbdirect_socket to {enqueue,_get_first}_reassembly() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 059/142] smb: client: pass struct smbdirect_socket to {allocate,destroy}_mr_list() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 060/142] smb: client: pass struct smbdirect_socket to smbd_disconnect_rdma_connection() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 061/142] smb: client: pass struct smbdirect_socket to smbd_post_recv() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 062/142] smb: client: pass struct smbdirect_socket to manage_credits_prior_sending() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 063/142] smb: client: pass struct smbdirect_socket to smbd_post_send() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 064/142] smb: client: pass struct smbdirect_socket to manage_keep_alive_before_sending() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 065/142] smb: client: pass struct smbdirect_socket to smbd_post_send_iter() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 066/142] smb: client: pass struct smbdirect_socket to smbd_post_send_empty() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 067/142] smb: client: pass struct smbdirect_socket to smbd_post_send_full_iter() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 068/142] smb: client: pass struct smbdirect_socket to smbd_conn_upcall() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 069/142] smb: client: pass struct smbdirect_socket to smbd_qp_async_error_upcall() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 070/142] smb: client: pass struct smbdirect_socket to smbd_create_id() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 071/142] smb: client: pass struct smbdirect_socket to smbd_ia_open() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 072/142] smb: client: pass struct smbdirect_socket to smbd_post_send_negotiate_req() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 073/142] smb: client: pass struct smbdirect_socket to smbd_negotiate() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 074/142] smb: client: pass struct smbdirect_socket to get_mr() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 075/142] smb: client: remove unused struct smbdirect_socket argument of smbd_iter_to_mr() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 076/142] smb: server: make use of common smbdirect_pdu.h Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 077/142] smb: server: make use of common smbdirect.h Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 078/142] smb: server: make use of common smbdirect_socket Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 079/142] smb: server: make use of common smbdirect_socket_parameters Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 080/142] smb: server: make use of smbdirect_socket->recv_io.expected Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 081/142] smb: server: make use of struct smbdirect_recv_io Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 082/142] smb: server: make use of smbdirect_socket.recv_io.free.{list,lock} Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 083/142] smb: server: make use of smbdirect_socket.recv_io.reassembly.* Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 084/142] smb: server: make use of SMBDIRECT_RECV_IO_MAX_SGE Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 085/142] smb: server: make use of struct smbdirect_send_io Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 086/142] smb: server: make use of smbdirect_socket.{send,recv}_io.mem.{cache,pool} Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 087/142] smb: server: make only use of wake_up[_all]() in transport_rdma.c Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 088/142] smb: server: add a pr_info() when the server starts running Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 089/142] smb: server: don't use delayed_work for post_recv_credits_work Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 090/142] smb: server: queue post_recv_credits_work in put_recvmsg() and avoid count_avail_recvmsg Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 091/142] smb: server: make use of smbdirect_socket.status_wait Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 092/142] smb: server: only turn into SMBDIRECT_SOCKET_CONNECTED when negotiation is done Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 093/142] smb: server: use disable_work_sync in transport_rdma.c Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 094/142] smb: server: move smb_direct_disconnect_rdma_work() into free_transport() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 095/142] smb: server: don't wait for info->send_pending == 0 on error Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 096/142] smb: server: make use of smbdirect_socket_init() Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 097/142] smb: server: make use of smbdirect_socket.disconnect_work Stefan Metzmacher
2025-08-25 20:40 ` [PATCH v4 098/142] smb: server: make use of smbdirect_socket.send_io.pending.{count,wait_queue} Stefan Metzmacher
2025-09-08  9:18   ` Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 099/142] smb: server: make use of smbdirect_socket.send_io.credits.{count,wait_queue} Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 100/142] smb: server: make use of struct smbdirect_send_batch Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 101/142] smb: server: make use smbdirect_socket.rw_io.credits Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 102/142] smb: server: make use of struct smbdirect_rw_io Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 103/142] smb: server: take the recv_credit_target from the negotiate req and always limit the range Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 104/142] smb: server: manage recv credits by counting posted recv_io and granted credits Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 105/142] smb: server: make use of smbdirect_socket.recv_io.{posted,credits} Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 106/142] smb: server: replace smb_trans_direct_transfort() with SMBD_TRANS() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 107/142] smb: server: remove useless casts from KSMBD_TRANS/SMBD_TRANS Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 108/142] smb: server: pass ksmbd_transport to get_smbd_max_read_write_size() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 109/142] smb: server: fill smbdirect_socket_parameters at the beginning and use the values from there Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 110/142] smb: server: make use of smbdirect_socket_parameters.negotiate_timeout_msec and change to 5s Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 111/142] smb: server: make use of smbdirect_socket_parameters.{initiator_depth,responder_resources} Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 112/142] smb: server: make use of smbdirect_socket.rdma.legacy_iwarp Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 113/142] smb: server: make use of smbdirect_socket.idle.immediate_work Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 114/142] smb: server: implement correct keepalive and timeout handling for smbdirect Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 115/142] smb: server: make use of smbdirect_socket.workqueue Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 116/142] smb: server: pass struct smbdirect_socket to {get_free,put}_recvmsg() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 117/142] smb: server: pass struct smbdirect_socket to smb_direct_{create,destroy}_pools() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 118/142] smb: server: pass struct smbdirect_socket to smb_direct_get_max_fr_pages() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 119/142] smb: server: pass struct smbdirect_socket to smb_direct_init_params() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 120/142] smb: server: pass struct smbdirect_socket to smb_direct_disconnect_rdma_connection() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 121/142] smb: server: pass struct smbdirect_socket to smb_direct_cm_handler() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 122/142] smb: server: pass struct smbdirect_socket to smb_direct_qpair_handler() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 123/142] smb: server: pass struct smbdirect_socket to smb_direct_create_qpair() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 124/142] smb: server: pass struct smbdirect_socket to smb_direct_post_recv() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 125/142] smb: server: pass struct smbdirect_socket to smb_direct_accept_client() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 126/142] smb: server: pass struct smbdirect_socket to smb_direct_prepare_negotiation() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 127/142] smb: server: pass struct smbdirect_socket to smb_direct_connect() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 128/142] smb: server: pass struct smbdirect_socket to smb_direct_{alloc,free}_sendmsg() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 129/142] smb: server: remove unused struct struct smb_direct_transport argument from smb_direct_send_ctx_init() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 130/142] smb: server: pass struct smbdirect_socket to smb_direct_post_send() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 131/142] smb: server: pass struct smbdirect_socket to smb_direct_flush_send_list() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 132/142] smb: server: pass struct smbdirect_socket to wait_for_credits() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 133/142] smb: server: pass struct smbdirect_socket to wait_for_send_credits() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 134/142] smb: server: pass struct smbdirect_socket to wait_for_rw_credits() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 135/142] smb: server: pass struct smbdirect_socket to calc_rw_credits() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 136/142] smb: server: pass struct smbdirect_socket to manage_credits_prior_sending() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 137/142] smb: server: pass struct smbdirect_socket to manage_keep_alive_before_sending() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 138/142] smb: server: pass struct smbdirect_socket to smb_direct_create_header() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 139/142] smb: server: pass struct smbdirect_socket to post_sendmsg() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 140/142] smb: server: pass struct smbdirect_socket to smb_direct_post_send_data() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 141/142] smb: server: pass struct smbdirect_socket to {enqueue,get_first}_reassembly() Stefan Metzmacher
2025-08-25 20:41 ` [PATCH v4 142/142] smb: server: pass struct smbdirect_socket to smb_direct_send_negotiate_response() Stefan Metzmacher
2025-08-29  1:39 ` [PATCH v4 000/142] smb: smbdirect/client/server: make use of common structures Namjae Jeon
2025-09-08 16:08 ` replace for-next-next... " Stefan Metzmacher
2025-09-09  0:00   ` Namjae Jeon
2025-09-09  3:26   ` Steve French
2025-09-10 19:05     ` Stefan Metzmacher
2025-09-10 23:35       ` Namjae Jeon
2025-09-13  0:03         ` Steve French

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).