Skip to content

Commit 3cd8b19

Browse files
committed
Merge tag 'v7.1-rc-part1-smbdirect-fixes' of git://git.samba.org/ksmbd
Pull smbdirect updates from Steve French: "Move smbdirect server and client code to common directory: - 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" * tag 'v7.1-rc-part1-smbdirect-fixes' of git://git.samba.org/ksmbd: (145 commits) smb: smbdirect: let smbdirect_connection_deregister_mr_io unlock while waiting smb: smbdirect: fix the logic in smbdirect_socket_destroy_sync() without an error smb: smbdirect: fix copyright header of smbdirect.h smb: smbdirect: change smbdirect_socket_parameters.{initiator_depth,responder_resources} to __u16 smb: smbdirect: remove unused SMBDIRECT_USE_INLINE_C_FILES logic smb: server: no longer use smbdirect_socket_set_custom_workqueue() smb: client: no longer use smbdirect_socket_set_custom_workqueue() smb: smbdirect: introduce global workqueues smb: smbdirect: prepare use of dedicated workqueues for different steps smb: smbdirect: remove unused smbdirect_connection_mr_io_recovery_work() smb: smbdirect: wrap rdma_disconnect() in rdma_[un]lock_handler() smb: server: make use of smbdirect_netdev_rdma_capable_mode_type() smb: smbdirect: introduce smbdirect_netdev_rdma_capable_mode_type() smb: server: make use of smbdirect.ko smb: server: remove unused ksmbd_transport_ops.prepare() smb: server: make use of smbdirect_socket_{listen,accept}() smb: server: only use public smbdirect functions smb: server: make use of smbdirect_socket_create_accepting()/smbdirect_socket_release() smb: server: make use of smbdirect_{socket_init_accepting,connection_wait_for_connected}() smb: server: make use of smbdirect_connection_send_iter() and related functions ...
2 parents d3d9443 + d09a040 commit 3cd8b19

30 files changed

Lines changed: 7353 additions & 6057 deletions

fs/smb/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
source "fs/smb/client/Kconfig"
66
source "fs/smb/server/Kconfig"
7+
source "fs/smb/common/smbdirect/Kconfig"
78

89
config SMBFS
910
tristate

fs/smb/client/Kconfig

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,9 @@ if CIFS
180180

181181
config CIFS_SMB_DIRECT
182182
bool "SMB Direct support"
183-
depends on CIFS=m && INFINIBAND && INFINIBAND_ADDR_TRANS || CIFS=y && INFINIBAND=y && INFINIBAND_ADDR_TRANS=y
183+
depends on CIFS && INFINIBAND && INFINIBAND_ADDR_TRANS
184+
depends on CIFS=m || INFINIBAND=y
185+
select SMB_COMMON_SMBDIRECT
184186
help
185187
Enables SMB Direct support for SMB 3.0, 3.02 and 3.1.1.
186188
SMB Direct allows transferring SMB packets over RDMA. If unsure,

fs/smb/client/cifs_debug.c

Lines changed: 1 addition & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
#endif
2424
#ifdef CONFIG_CIFS_SMB_DIRECT
2525
#include "smbdirect.h"
26-
#include "../common/smbdirect/smbdirect_pdu.h"
2726
#endif
2827
#include "cifs_swn.h"
2928
#include "cached_dir.h"
@@ -452,11 +451,6 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
452451
c = 0;
453452
spin_lock(&cifs_tcp_ses_lock);
454453
list_for_each_entry(server, &cifs_tcp_ses_list, tcp_ses_list) {
455-
#ifdef CONFIG_CIFS_SMB_DIRECT
456-
struct smbdirect_socket *sc;
457-
struct smbdirect_socket_parameters *sp;
458-
#endif
459-
460454
/* channel info will be printed as a part of sessions below */
461455
if (SERVER_IS_CHAN(server))
462456
continue;
@@ -471,66 +465,7 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
471465
seq_printf(m, "\nClientGUID: %pUL", server->client_guid);
472466
spin_unlock(&server->srv_lock);
473467
#ifdef CONFIG_CIFS_SMB_DIRECT
474-
if (!server->rdma)
475-
goto skip_rdma;
476-
477-
if (!server->smbd_conn) {
478-
seq_printf(m, "\nSMBDirect transport not available");
479-
goto skip_rdma;
480-
}
481-
sc = &server->smbd_conn->socket;
482-
sp = &sc->parameters;
483-
484-
seq_printf(m, "\nSMBDirect protocol version: 0x%x "
485-
"transport status: %s (%u)",
486-
SMBDIRECT_V1,
487-
smbdirect_socket_status_string(sc->status),
488-
sc->status);
489-
seq_printf(m, "\nConn receive_credit_max: %u "
490-
"send_credit_target: %u max_send_size: %u",
491-
sp->recv_credit_max,
492-
sp->send_credit_target,
493-
sp->max_send_size);
494-
seq_printf(m, "\nConn max_fragmented_recv_size: %u "
495-
"max_fragmented_send_size: %u max_receive_size:%u",
496-
sp->max_fragmented_recv_size,
497-
sp->max_fragmented_send_size,
498-
sp->max_recv_size);
499-
seq_printf(m, "\nConn keep_alive_interval: %u "
500-
"max_readwrite_size: %u rdma_readwrite_threshold: %u",
501-
sp->keepalive_interval_msec * 1000,
502-
sp->max_read_write_size,
503-
server->rdma_readwrite_threshold);
504-
seq_printf(m, "\nDebug count_get_receive_buffer: %llu "
505-
"count_put_receive_buffer: %llu count_send_empty: %llu",
506-
sc->statistics.get_receive_buffer,
507-
sc->statistics.put_receive_buffer,
508-
sc->statistics.send_empty);
509-
seq_printf(m, "\nRead Queue "
510-
"count_enqueue_reassembly_queue: %llu "
511-
"count_dequeue_reassembly_queue: %llu "
512-
"reassembly_data_length: %u "
513-
"reassembly_queue_length: %u",
514-
sc->statistics.enqueue_reassembly_queue,
515-
sc->statistics.dequeue_reassembly_queue,
516-
sc->recv_io.reassembly.data_length,
517-
sc->recv_io.reassembly.queue_length);
518-
seq_printf(m, "\nCurrent Credits send_credits: %u "
519-
"receive_credits: %u receive_credit_target: %u",
520-
atomic_read(&sc->send_io.credits.count),
521-
atomic_read(&sc->recv_io.credits.count),
522-
sc->recv_io.credits.target);
523-
seq_printf(m, "\nPending send_pending: %u ",
524-
atomic_read(&sc->send_io.pending.count));
525-
seq_printf(m, "\nMR responder_resources: %u "
526-
"max_frmr_depth: %u mr_type: 0x%x",
527-
sp->responder_resources,
528-
sp->max_frmr_depth,
529-
sc->mr_io.type);
530-
seq_printf(m, "\nMR mr_ready_count: %u mr_used_count: %u",
531-
atomic_read(&sc->mr_io.ready.count),
532-
atomic_read(&sc->mr_io.used.count));
533-
skip_rdma:
468+
smbd_debug_proc_show(server, m);
534469
#endif
535470
seq_printf(m, "\nNumber of credits: %d,%d,%d Dialect 0x%x",
536471
server->credits,

fs/smb/client/smb2pdu.c

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
#include "../common/smb2status.h"
3737
#include "smb2glob.h"
3838
#include "cifs_spnego.h"
39-
#include "../common/smbdirect/smbdirect.h"
4039
#include "smbdirect.h"
4140
#include "trace.h"
4241
#ifdef CONFIG_CIFS_DFS_UPCALL
@@ -4554,9 +4553,7 @@ smb2_new_read_req(void **buf, unsigned int *total_len,
45544553
req->ReadChannelInfoLength =
45554554
cpu_to_le16(sizeof(struct smbdirect_buffer_descriptor_v1));
45564555
v1 = (struct smbdirect_buffer_descriptor_v1 *) &req->Buffer[0];
4557-
v1->offset = cpu_to_le64(rdata->mr->mr->iova);
4558-
v1->token = cpu_to_le32(rdata->mr->mr->rkey);
4559-
v1->length = cpu_to_le32(rdata->mr->mr->length);
4556+
smbd_mr_fill_buffer_descriptor(rdata->mr, v1);
45604557

45614558
*total_len += sizeof(*v1) - 1;
45624559
}
@@ -5155,9 +5152,7 @@ smb2_async_writev(struct cifs_io_subrequest *wdata)
51555152
req->WriteChannelInfoLength =
51565153
cpu_to_le16(sizeof(struct smbdirect_buffer_descriptor_v1));
51575154
v1 = (struct smbdirect_buffer_descriptor_v1 *) &req->Buffer[0];
5158-
v1->offset = cpu_to_le64(wdata->mr->mr->iova);
5159-
v1->token = cpu_to_le32(wdata->mr->mr->rkey);
5160-
v1->length = cpu_to_le32(wdata->mr->mr->length);
5155+
smbd_mr_fill_buffer_descriptor(wdata->mr, v1);
51615156

51625157
rqst.rq_iov[0].iov_len += sizeof(*v1);
51635158

0 commit comments

Comments
 (0)