]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
smb: smbdirect: introduce the basic smbdirect.ko
authorStefan Metzmacher <metze@samba.org>
Fri, 18 Jul 2025 16:44:15 +0000 (18:44 +0200)
committerSteve French <stfrench@microsoft.com>
Thu, 16 Apr 2026 02:58:20 +0000 (21:58 -0500)
This exports the functions needed by cifs.ko and ksmbd.ko.

It doesn't yet provide a generic socket layer, but it
is a good start to introduce that on top.
It will be much easier after Davids refactoring
using MSG_SPLICE_PAGES, will make it easier to
use the socket layer without an additional copy.

Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: Namjae Jeon <linkinjeon@kernel.org>
Cc: David Howells <dhowells@redhat.com>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/Kconfig
fs/smb/common/Makefile
fs/smb/common/smbdirect/Kconfig [new file with mode: 0644]
fs/smb/common/smbdirect/Makefile [new file with mode: 0644]
fs/smb/common/smbdirect/smbdirect_internal.h
fs/smb/common/smbdirect/smbdirect_main.c [new file with mode: 0644]

index 85f7ad5fbc5e76d37d36b5bd4fdb8c783c420094..b4b2cfdc2a6bffef25778fe0fa9d5a8c562c0996 100644 (file)
@@ -4,6 +4,7 @@
 
 source "fs/smb/client/Kconfig"
 source "fs/smb/server/Kconfig"
+source "fs/smb/common/smbdirect/Kconfig"
 
 config SMBFS
        tristate
index 9e0730a385fb118fc3c44d139dba24e9fae19c45..e6ee65c31b5dc324c11c352fbc278d66672d8c7b 100644 (file)
@@ -4,3 +4,4 @@
 #
 
 obj-$(CONFIG_SMBFS) += cifs_md4.o
+obj-$(CONFIG_SMB_COMMON_SMBDIRECT) += smbdirect/
diff --git a/fs/smb/common/smbdirect/Kconfig b/fs/smb/common/smbdirect/Kconfig
new file mode 100644 (file)
index 0000000..a46a2e6
--- /dev/null
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# smbdirect configuration
+
+config SMB_COMMON_SMBDIRECT
+       def_tristate n
+       depends on INFINIBAND && INFINIBAND_ADDR_TRANS
+       depends on m || INFINIBAND=y
+       select SG_POOL
diff --git a/fs/smb/common/smbdirect/Makefile b/fs/smb/common/smbdirect/Makefile
new file mode 100644 (file)
index 0000000..b41271f
--- /dev/null
@@ -0,0 +1,17 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Makefile for smbdirect support
+#
+
+obj-$(CONFIG_SMB_COMMON_SMBDIRECT) += smbdirect.o
+
+smbdirect-y := \
+       smbdirect_socket.o      \
+       smbdirect_connection.o  \
+       smbdirect_mr.o          \
+       smbdirect_rw.o          \
+       smbdirect_debug.o       \
+       smbdirect_connect.o     \
+       smbdirect_listen.o      \
+       smbdirect_accept.o      \
+       smbdirect_main.o
index f8432c8c1a5f87fe7f12ff5ae4389f34a1a7d2d8..901540d0cbbffa7549cba10d22a25e0194e5d827 100644 (file)
 #include "smbdirect.h"
 #include "smbdirect_pdu.h"
 #include "smbdirect_public.h"
+
+#include <linux/mutex.h>
+
+struct smbdirect_module_state {
+       struct mutex mutex;
+};
+
+extern struct smbdirect_module_state smbdirect_globals;
+
 #include "smbdirect_socket.h"
 
 #ifdef SMBDIRECT_USE_INLINE_C_FILES
diff --git a/fs/smb/common/smbdirect/smbdirect_main.c b/fs/smb/common/smbdirect/smbdirect_main.c
new file mode 100644 (file)
index 0000000..c61ae8d
--- /dev/null
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ *   Copyright (c) 2025, Stefan Metzmacher
+ */
+
+#include "smbdirect_internal.h"
+#include <linux/module.h>
+
+struct smbdirect_module_state smbdirect_globals = {
+       .mutex = __MUTEX_INITIALIZER(smbdirect_globals.mutex),
+};
+
+static __init int smbdirect_module_init(void)
+{
+       pr_notice("subsystem loading...\n");
+       mutex_lock(&smbdirect_globals.mutex);
+
+       /* TODO... */
+
+       mutex_unlock(&smbdirect_globals.mutex);
+       pr_notice("subsystem loaded\n");
+       return 0;
+}
+
+static __exit void smbdirect_module_exit(void)
+{
+       pr_notice("subsystem unloading...\n");
+       mutex_lock(&smbdirect_globals.mutex);
+
+       /* TODO... */
+
+       mutex_unlock(&smbdirect_globals.mutex);
+       pr_notice("subsystem unloaded\n");
+}
+
+module_init(smbdirect_module_init);
+module_exit(smbdirect_module_exit);
+
+MODULE_DESCRIPTION("smbdirect subsystem");
+MODULE_LICENSE("GPL");