diff options
| author | Stefan Metzmacher <metze@samba.org> | 2025-07-18 19:44:15 +0300 |
|---|---|---|
| committer | Steve French <stfrench@microsoft.com> | 2026-04-16 05:58:20 +0300 |
| commit | f9a804da479cc41172f1039b4ffde06a09920506 (patch) | |
| tree | 3040b2cf7950bee148e1afad59ca7cf048f20987 | |
| parent | dc691b91ad1677def14582a279e56fd943b52f94 (diff) | |
| download | linux-f9a804da479cc41172f1039b4ffde06a09920506.tar.xz | |
smb: smbdirect: introduce the basic smbdirect.ko
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>
| -rw-r--r-- | fs/smb/Kconfig | 1 | ||||
| -rw-r--r-- | fs/smb/common/Makefile | 1 | ||||
| -rw-r--r-- | fs/smb/common/smbdirect/Kconfig | 9 | ||||
| -rw-r--r-- | fs/smb/common/smbdirect/Makefile | 17 | ||||
| -rw-r--r-- | fs/smb/common/smbdirect/smbdirect_internal.h | 9 | ||||
| -rw-r--r-- | fs/smb/common/smbdirect/smbdirect_main.c | 40 |
6 files changed, 77 insertions, 0 deletions
diff --git a/fs/smb/Kconfig b/fs/smb/Kconfig index 85f7ad5fbc5e..b4b2cfdc2a6b 100644 --- a/fs/smb/Kconfig +++ b/fs/smb/Kconfig @@ -4,6 +4,7 @@ source "fs/smb/client/Kconfig" source "fs/smb/server/Kconfig" +source "fs/smb/common/smbdirect/Kconfig" config SMBFS tristate diff --git a/fs/smb/common/Makefile b/fs/smb/common/Makefile index 9e0730a385fb..e6ee65c31b5d 100644 --- a/fs/smb/common/Makefile +++ b/fs/smb/common/Makefile @@ -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 index 000000000000..a46a2e6ec87a --- /dev/null +++ b/fs/smb/common/smbdirect/Kconfig @@ -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 index 000000000000..b41271facfc3 --- /dev/null +++ b/fs/smb/common/smbdirect/Makefile @@ -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 diff --git a/fs/smb/common/smbdirect/smbdirect_internal.h b/fs/smb/common/smbdirect/smbdirect_internal.h index f8432c8c1a5f..901540d0cbbf 100644 --- a/fs/smb/common/smbdirect/smbdirect_internal.h +++ b/fs/smb/common/smbdirect/smbdirect_internal.h @@ -13,6 +13,15 @@ #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 index 000000000000..c61ae8d7f4f0 --- /dev/null +++ b/fs/smb/common/smbdirect/smbdirect_main.c @@ -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"); |
