Re: patches to move ksmbd and cifs under new subdirectory

From: Steve French
Date: Tue May 23 2023 - 22:41:25 EST


Lightly updated (e.g. to include a missing trivial change needed to
Documentation/filesystems/index.rst that Namjae noticed). See
attached.

Presumably can defer the additional cleanup/prettying (ie those beyond
those required for the directory rename) with distinct patches later.

On Tue, May 23, 2023 at 12:35 PM Linus Torvalds
<torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> On Mon, May 22, 2023 at 11:39 PM Steve French <smfrench@xxxxxxxxx> wrote:
> >
> > My reason for adding CONFIG_SMB_CLIENT, enabling CONFIG_SMB_CLIENT
> > when CONFIG_CIFS was enabled, I was trying to make the Makefile more clear
> > (without changing any behavior):
>
> That sounds ok, but I think it should be done separately from the
> move. Keep the move as a pure move/rename, not "new things".
>
> Also, when you actually do this cleanup, I think you really should just do
>
> config SMB
> tristate
>
> config SMB_CLIENT
> tristate
>
> to declare them, but *not* have that
>
> default y if CIFS=y || SMB_SERVER=y
> default m if CIFS=m || SMB_SERVER=m
>
> kind of noise anywhere. Not for SMBFS, not for SMB_CLIENT.
>
> Just do
>
> select SMBFS
> select SMB_CLIENT
>
> in the current CIFS Kconfig entry. And then SMB_SERVER can likewise do
>
> select SMBFS
>
> and I think it will all automatically do what those much more complex
> "default" expressions currently do.
>
> But again - I think this kind of "clean things up" should be entirely
> separate from the pure code movement. Don't do new functionality when
> moving things, just do the minimal required infrastructure changes to
> make things work with the movement.
>
> Linus



--
Thanks,

Steve
From e3adc6b1f0d12b80a7a81fd4f345890a4fb483d6 Mon Sep 17 00:00:00 2001
From: Steve French <stfrench@xxxxxxxxxxxxx>
Date: Sun, 21 May 2023 20:46:30 -0500
Subject: [PATCH 1/3] smb: move client and server files to common directory
fs/smb

Move CIFS/SMB3 related client and server files (cifs.ko and ksmbd.ko
and helper modules) to new fs/smb subdirectory:

fs/cifs --> fs/smb/client
fs/ksmbd --> fs/smb/server
fs/smbfs_common --> fs/smb/common

Suggested-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Acked-by: Namjae Jeon <linkinjeon@xxxxxxxxxx>
Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
---
MAINTAINERS | 8 ++++----
fs/Kconfig | 9 +--------
fs/Makefile | 4 +---
fs/smb/Kconfig | 11 +++++++++++
fs/smb/Makefile | 5 +++++
fs/{cifs => smb/client}/Kconfig | 0
fs/{cifs => smb/client}/Makefile | 0
fs/{cifs => smb/client}/asn1.c | 0
fs/{cifs => smb/client}/cached_dir.c | 0
fs/{cifs => smb/client}/cached_dir.h | 0
fs/{cifs => smb/client}/cifs_debug.c | 0
fs/{cifs => smb/client}/cifs_debug.h | 0
fs/{cifs => smb/client}/cifs_dfs_ref.c | 0
fs/{cifs => smb/client}/cifs_fs_sb.h | 0
fs/{cifs => smb/client}/cifs_ioctl.h | 0
fs/{cifs => smb/client}/cifs_spnego.c | 0
fs/{cifs => smb/client}/cifs_spnego.h | 0
fs/{cifs => smb/client}/cifs_spnego_negtokeninit.asn1 | 0
fs/{cifs => smb/client}/cifs_swn.c | 0
fs/{cifs => smb/client}/cifs_swn.h | 0
fs/{cifs => smb/client}/cifs_unicode.c | 0
fs/{cifs => smb/client}/cifs_unicode.h | 0
fs/{cifs => smb/client}/cifs_uniupr.h | 0
fs/{cifs => smb/client}/cifsacl.c | 0
fs/{cifs => smb/client}/cifsacl.h | 0
fs/{cifs => smb/client}/cifsencrypt.c | 2 +-
fs/{cifs => smb/client}/cifsfs.c | 0
fs/{cifs => smb/client}/cifsfs.h | 0
fs/{cifs => smb/client}/cifsglob.h | 2 +-
fs/{cifs => smb/client}/cifspdu.h | 2 +-
fs/{cifs => smb/client}/cifsproto.h | 0
fs/{cifs => smb/client}/cifsroot.c | 0
fs/{cifs => smb/client}/cifssmb.c | 0
fs/{cifs => smb/client}/connect.c | 0
fs/{cifs => smb/client}/dfs.c | 0
fs/{cifs => smb/client}/dfs.h | 0
fs/{cifs => smb/client}/dfs_cache.c | 0
fs/{cifs => smb/client}/dfs_cache.h | 0
fs/{cifs => smb/client}/dir.c | 0
fs/{cifs => smb/client}/dns_resolve.c | 0
fs/{cifs => smb/client}/dns_resolve.h | 0
fs/{cifs => smb/client}/export.c | 0
fs/{cifs => smb/client}/file.c | 0
fs/{cifs => smb/client}/fs_context.c | 0
fs/{cifs => smb/client}/fs_context.h | 0
fs/{cifs => smb/client}/fscache.c | 0
fs/{cifs => smb/client}/fscache.h | 0
fs/{cifs => smb/client}/inode.c | 0
fs/{cifs => smb/client}/ioctl.c | 0
fs/{cifs => smb/client}/link.c | 0
fs/{cifs => smb/client}/misc.c | 0
fs/{cifs => smb/client}/netlink.c | 0
fs/{cifs => smb/client}/netlink.h | 0
fs/{cifs => smb/client}/netmisc.c | 0
fs/{cifs => smb/client}/nterr.c | 0
fs/{cifs => smb/client}/nterr.h | 0
fs/{cifs => smb/client}/ntlmssp.h | 0
fs/{cifs => smb/client}/readdir.c | 0
fs/{cifs => smb/client}/rfc1002pdu.h | 0
fs/{cifs => smb/client}/sess.c | 0
fs/{cifs => smb/client}/smb1ops.c | 0
fs/{cifs => smb/client}/smb2file.c | 0
fs/{cifs => smb/client}/smb2glob.h | 0
fs/{cifs => smb/client}/smb2inode.c | 0
fs/{cifs => smb/client}/smb2maperror.c | 0
fs/{cifs => smb/client}/smb2misc.c | 0
fs/{cifs => smb/client}/smb2ops.c | 0
fs/{cifs => smb/client}/smb2pdu.c | 0
fs/{cifs => smb/client}/smb2pdu.h | 0
fs/{cifs => smb/client}/smb2proto.h | 0
fs/{cifs => smb/client}/smb2status.h | 0
fs/{cifs => smb/client}/smb2transport.c | 0
fs/{cifs => smb/client}/smbdirect.c | 0
fs/{cifs => smb/client}/smbdirect.h | 0
fs/{cifs => smb/client}/smbencrypt.c | 2 +-
fs/{cifs => smb/client}/smberr.h | 0
fs/{cifs => smb/client}/trace.c | 0
fs/{cifs => smb/client}/trace.h | 0
fs/{cifs => smb/client}/transport.c | 0
fs/{cifs => smb/client}/unc.c | 0
fs/{cifs => smb/client}/winucase.c | 0
fs/{cifs => smb/client}/xattr.c | 0
fs/{smbfs_common => smb/common}/Makefile | 0
fs/{smbfs_common => smb/common}/arc4.h | 0
fs/{smbfs_common => smb/common}/cifs_arc4.c | 0
fs/{smbfs_common => smb/common}/cifs_md4.c | 0
fs/{smbfs_common => smb/common}/md4.h | 0
fs/{smbfs_common => smb/common}/smb2pdu.h | 0
fs/{smbfs_common => smb/common}/smbfsctl.h | 0
fs/{ksmbd => smb/server}/Kconfig | 0
fs/{ksmbd => smb/server}/Makefile | 0
fs/{ksmbd => smb/server}/asn1.c | 0
fs/{ksmbd => smb/server}/asn1.h | 0
fs/{ksmbd => smb/server}/auth.c | 2 +-
fs/{ksmbd => smb/server}/auth.h | 0
fs/{ksmbd => smb/server}/connection.c | 0
fs/{ksmbd => smb/server}/connection.h | 0
fs/{ksmbd => smb/server}/crypto_ctx.c | 0
fs/{ksmbd => smb/server}/crypto_ctx.h | 0
fs/{ksmbd => smb/server}/glob.h | 0
fs/{ksmbd => smb/server}/ksmbd_netlink.h | 0
.../server}/ksmbd_spnego_negtokeninit.asn1 | 0
.../server}/ksmbd_spnego_negtokentarg.asn1 | 0
fs/{ksmbd => smb/server}/ksmbd_work.c | 0
fs/{ksmbd => smb/server}/ksmbd_work.h | 0
fs/{ksmbd => smb/server}/mgmt/ksmbd_ida.c | 0
fs/{ksmbd => smb/server}/mgmt/ksmbd_ida.h | 0
fs/{ksmbd => smb/server}/mgmt/share_config.c | 0
fs/{ksmbd => smb/server}/mgmt/share_config.h | 0
fs/{ksmbd => smb/server}/mgmt/tree_connect.c | 0
fs/{ksmbd => smb/server}/mgmt/tree_connect.h | 0
fs/{ksmbd => smb/server}/mgmt/user_config.c | 0
fs/{ksmbd => smb/server}/mgmt/user_config.h | 0
fs/{ksmbd => smb/server}/mgmt/user_session.c | 0
fs/{ksmbd => smb/server}/mgmt/user_session.h | 0
fs/{ksmbd => smb/server}/misc.c | 0
fs/{ksmbd => smb/server}/misc.h | 0
fs/{ksmbd => smb/server}/ndr.c | 0
fs/{ksmbd => smb/server}/ndr.h | 0
fs/{ksmbd => smb/server}/nterr.h | 0
fs/{ksmbd => smb/server}/ntlmssp.h | 0
fs/{ksmbd => smb/server}/oplock.c | 0
fs/{ksmbd => smb/server}/oplock.h | 0
fs/{ksmbd => smb/server}/server.c | 0
fs/{ksmbd => smb/server}/server.h | 0
fs/{ksmbd => smb/server}/smb2misc.c | 0
fs/{ksmbd => smb/server}/smb2ops.c | 0
fs/{ksmbd => smb/server}/smb2pdu.c | 0
fs/{ksmbd => smb/server}/smb2pdu.h | 0
fs/{ksmbd => smb/server}/smb_common.c | 0
fs/{ksmbd => smb/server}/smb_common.h | 2 +-
fs/{ksmbd => smb/server}/smbacl.c | 0
fs/{ksmbd => smb/server}/smbacl.h | 0
fs/{ksmbd => smb/server}/smbfsctl.h | 0
fs/{ksmbd => smb/server}/smbstatus.h | 0
fs/{ksmbd => smb/server}/transport_ipc.c | 0
fs/{ksmbd => smb/server}/transport_ipc.h | 0
fs/{ksmbd => smb/server}/transport_rdma.c | 0
fs/{ksmbd => smb/server}/transport_rdma.h | 0
fs/{ksmbd => smb/server}/transport_tcp.c | 0
fs/{ksmbd => smb/server}/transport_tcp.h | 0
fs/{ksmbd => smb/server}/unicode.c | 0
fs/{ksmbd => smb/server}/unicode.h | 0
fs/{ksmbd => smb/server}/uniupr.h | 0
fs/{ksmbd => smb/server}/vfs.c | 0
fs/{ksmbd => smb/server}/vfs.h | 0
fs/{ksmbd => smb/server}/vfs_cache.c | 0
fs/{ksmbd => smb/server}/vfs_cache.h | 0
fs/{ksmbd => smb/server}/xattr.h | 0
149 files changed, 28 insertions(+), 21 deletions(-)
create mode 100644 fs/smb/Kconfig
create mode 100644 fs/smb/Makefile
rename fs/{cifs => smb/client}/Kconfig (100%)
rename fs/{cifs => smb/client}/Makefile (100%)
rename fs/{cifs => smb/client}/asn1.c (100%)
rename fs/{cifs => smb/client}/cached_dir.c (100%)
rename fs/{cifs => smb/client}/cached_dir.h (100%)
rename fs/{cifs => smb/client}/cifs_debug.c (100%)
rename fs/{cifs => smb/client}/cifs_debug.h (100%)
rename fs/{cifs => smb/client}/cifs_dfs_ref.c (100%)
rename fs/{cifs => smb/client}/cifs_fs_sb.h (100%)
rename fs/{cifs => smb/client}/cifs_ioctl.h (100%)
rename fs/{cifs => smb/client}/cifs_spnego.c (100%)
rename fs/{cifs => smb/client}/cifs_spnego.h (100%)
rename fs/{cifs => smb/client}/cifs_spnego_negtokeninit.asn1 (100%)
rename fs/{cifs => smb/client}/cifs_swn.c (100%)
rename fs/{cifs => smb/client}/cifs_swn.h (100%)
rename fs/{cifs => smb/client}/cifs_unicode.c (100%)
rename fs/{cifs => smb/client}/cifs_unicode.h (100%)
rename fs/{cifs => smb/client}/cifs_uniupr.h (100%)
rename fs/{cifs => smb/client}/cifsacl.c (100%)
rename fs/{cifs => smb/client}/cifsacl.h (100%)
rename fs/{cifs => smb/client}/cifsencrypt.c (99%)
rename fs/{cifs => smb/client}/cifsfs.c (100%)
rename fs/{cifs => smb/client}/cifsfs.h (100%)
rename fs/{cifs => smb/client}/cifsglob.h (99%)
rename fs/{cifs => smb/client}/cifspdu.h (99%)
rename fs/{cifs => smb/client}/cifsproto.h (100%)
rename fs/{cifs => smb/client}/cifsroot.c (100%)
rename fs/{cifs => smb/client}/cifssmb.c (100%)
rename fs/{cifs => smb/client}/connect.c (100%)
rename fs/{cifs => smb/client}/dfs.c (100%)
rename fs/{cifs => smb/client}/dfs.h (100%)
rename fs/{cifs => smb/client}/dfs_cache.c (100%)
rename fs/{cifs => smb/client}/dfs_cache.h (100%)
rename fs/{cifs => smb/client}/dir.c (100%)
rename fs/{cifs => smb/client}/dns_resolve.c (100%)
rename fs/{cifs => smb/client}/dns_resolve.h (100%)
rename fs/{cifs => smb/client}/export.c (100%)
rename fs/{cifs => smb/client}/file.c (100%)
rename fs/{cifs => smb/client}/fs_context.c (100%)
rename fs/{cifs => smb/client}/fs_context.h (100%)
rename fs/{cifs => smb/client}/fscache.c (100%)
rename fs/{cifs => smb/client}/fscache.h (100%)
rename fs/{cifs => smb/client}/inode.c (100%)
rename fs/{cifs => smb/client}/ioctl.c (100%)
rename fs/{cifs => smb/client}/link.c (100%)
rename fs/{cifs => smb/client}/misc.c (100%)
rename fs/{cifs => smb/client}/netlink.c (100%)
rename fs/{cifs => smb/client}/netlink.h (100%)
rename fs/{cifs => smb/client}/netmisc.c (100%)
rename fs/{cifs => smb/client}/nterr.c (100%)
rename fs/{cifs => smb/client}/nterr.h (100%)
rename fs/{cifs => smb/client}/ntlmssp.h (100%)
rename fs/{cifs => smb/client}/readdir.c (100%)
rename fs/{cifs => smb/client}/rfc1002pdu.h (100%)
rename fs/{cifs => smb/client}/sess.c (100%)
rename fs/{cifs => smb/client}/smb1ops.c (100%)
rename fs/{cifs => smb/client}/smb2file.c (100%)
rename fs/{cifs => smb/client}/smb2glob.h (100%)
rename fs/{cifs => smb/client}/smb2inode.c (100%)
rename fs/{cifs => smb/client}/smb2maperror.c (100%)
rename fs/{cifs => smb/client}/smb2misc.c (100%)
rename fs/{cifs => smb/client}/smb2ops.c (100%)
rename fs/{cifs => smb/client}/smb2pdu.c (100%)
rename fs/{cifs => smb/client}/smb2pdu.h (100%)
rename fs/{cifs => smb/client}/smb2proto.h (100%)
rename fs/{cifs => smb/client}/smb2status.h (100%)
rename fs/{cifs => smb/client}/smb2transport.c (100%)
rename fs/{cifs => smb/client}/smbdirect.c (100%)
rename fs/{cifs => smb/client}/smbdirect.h (100%)
rename fs/{cifs => smb/client}/smbencrypt.c (98%)
rename fs/{cifs => smb/client}/smberr.h (100%)
rename fs/{cifs => smb/client}/trace.c (100%)
rename fs/{cifs => smb/client}/trace.h (100%)
rename fs/{cifs => smb/client}/transport.c (100%)
rename fs/{cifs => smb/client}/unc.c (100%)
rename fs/{cifs => smb/client}/winucase.c (100%)
rename fs/{cifs => smb/client}/xattr.c (100%)
rename fs/{smbfs_common => smb/common}/Makefile (100%)
rename fs/{smbfs_common => smb/common}/arc4.h (100%)
rename fs/{smbfs_common => smb/common}/cifs_arc4.c (100%)
rename fs/{smbfs_common => smb/common}/cifs_md4.c (100%)
rename fs/{smbfs_common => smb/common}/md4.h (100%)
rename fs/{smbfs_common => smb/common}/smb2pdu.h (100%)
rename fs/{smbfs_common => smb/common}/smbfsctl.h (100%)
rename fs/{ksmbd => smb/server}/Kconfig (100%)
rename fs/{ksmbd => smb/server}/Makefile (100%)
rename fs/{ksmbd => smb/server}/asn1.c (100%)
rename fs/{ksmbd => smb/server}/asn1.h (100%)
rename fs/{ksmbd => smb/server}/auth.c (99%)
rename fs/{ksmbd => smb/server}/auth.h (100%)
rename fs/{ksmbd => smb/server}/connection.c (100%)
rename fs/{ksmbd => smb/server}/connection.h (100%)
rename fs/{ksmbd => smb/server}/crypto_ctx.c (100%)
rename fs/{ksmbd => smb/server}/crypto_ctx.h (100%)
rename fs/{ksmbd => smb/server}/glob.h (100%)
rename fs/{ksmbd => smb/server}/ksmbd_netlink.h (100%)
rename fs/{ksmbd => smb/server}/ksmbd_spnego_negtokeninit.asn1 (100%)
rename fs/{ksmbd => smb/server}/ksmbd_spnego_negtokentarg.asn1 (100%)
rename fs/{ksmbd => smb/server}/ksmbd_work.c (100%)
rename fs/{ksmbd => smb/server}/ksmbd_work.h (100%)
rename fs/{ksmbd => smb/server}/mgmt/ksmbd_ida.c (100%)
rename fs/{ksmbd => smb/server}/mgmt/ksmbd_ida.h (100%)
rename fs/{ksmbd => smb/server}/mgmt/share_config.c (100%)
rename fs/{ksmbd => smb/server}/mgmt/share_config.h (100%)
rename fs/{ksmbd => smb/server}/mgmt/tree_connect.c (100%)
rename fs/{ksmbd => smb/server}/mgmt/tree_connect.h (100%)
rename fs/{ksmbd => smb/server}/mgmt/user_config.c (100%)
rename fs/{ksmbd => smb/server}/mgmt/user_config.h (100%)
rename fs/{ksmbd => smb/server}/mgmt/user_session.c (100%)
rename fs/{ksmbd => smb/server}/mgmt/user_session.h (100%)
rename fs/{ksmbd => smb/server}/misc.c (100%)
rename fs/{ksmbd => smb/server}/misc.h (100%)
rename fs/{ksmbd => smb/server}/ndr.c (100%)
rename fs/{ksmbd => smb/server}/ndr.h (100%)
rename fs/{ksmbd => smb/server}/nterr.h (100%)
rename fs/{ksmbd => smb/server}/ntlmssp.h (100%)
rename fs/{ksmbd => smb/server}/oplock.c (100%)
rename fs/{ksmbd => smb/server}/oplock.h (100%)
rename fs/{ksmbd => smb/server}/server.c (100%)
rename fs/{ksmbd => smb/server}/server.h (100%)
rename fs/{ksmbd => smb/server}/smb2misc.c (100%)
rename fs/{ksmbd => smb/server}/smb2ops.c (100%)
rename fs/{ksmbd => smb/server}/smb2pdu.c (100%)
rename fs/{ksmbd => smb/server}/smb2pdu.h (100%)
rename fs/{ksmbd => smb/server}/smb_common.c (100%)
rename fs/{ksmbd => smb/server}/smb_common.h (99%)
rename fs/{ksmbd => smb/server}/smbacl.c (100%)
rename fs/{ksmbd => smb/server}/smbacl.h (100%)
rename fs/{ksmbd => smb/server}/smbfsctl.h (100%)
rename fs/{ksmbd => smb/server}/smbstatus.h (100%)
rename fs/{ksmbd => smb/server}/transport_ipc.c (100%)
rename fs/{ksmbd => smb/server}/transport_ipc.h (100%)
rename fs/{ksmbd => smb/server}/transport_rdma.c (100%)
rename fs/{ksmbd => smb/server}/transport_rdma.h (100%)
rename fs/{ksmbd => smb/server}/transport_tcp.c (100%)
rename fs/{ksmbd => smb/server}/transport_tcp.h (100%)
rename fs/{ksmbd => smb/server}/unicode.c (100%)
rename fs/{ksmbd => smb/server}/unicode.h (100%)
rename fs/{ksmbd => smb/server}/uniupr.h (100%)
rename fs/{ksmbd => smb/server}/vfs.c (100%)
rename fs/{ksmbd => smb/server}/vfs.h (100%)
rename fs/{ksmbd => smb/server}/vfs_cache.c (100%)
rename fs/{ksmbd => smb/server}/vfs_cache.h (100%)
rename fs/{ksmbd => smb/server}/xattr.h (100%)

diff --git a/MAINTAINERS b/MAINTAINERS
index 27ef11624748..902f763e845d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -5140,8 +5140,8 @@ S: Supported
W: https://wiki.samba.org/index.php/LinuxCIFS
T: git git://git.samba.org/sfrench/cifs-2.6.git
F: Documentation/admin-guide/cifs/
-F: fs/cifs/
-F: fs/smbfs_common/
+F: fs/smb/client/
+F: fs/smb/common/
F: include/uapi/linux/cifs

COMPACTPCI HOTPLUG CORE
@@ -11301,8 +11301,8 @@ L: linux-cifs@xxxxxxxxxxxxxxx
S: Maintained
T: git git://git.samba.org/ksmbd.git
F: Documentation/filesystems/cifs/ksmbd.rst
-F: fs/ksmbd/
-F: fs/smbfs_common/
+F: fs/smb/common/
+F: fs/smb/server/

KERNEL UNIT TESTING FRAMEWORK (KUnit)
M: Brendan Higgins <brendanhiggins@xxxxxxxxxx>
diff --git a/fs/Kconfig b/fs/Kconfig
index cc07a0cd3172..18d034ec7953 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -368,14 +368,7 @@ config NFS_V4_2_SSC_HELPER
source "net/sunrpc/Kconfig"
source "fs/ceph/Kconfig"

-source "fs/cifs/Kconfig"
-source "fs/ksmbd/Kconfig"
-
-config SMBFS_COMMON
- tristate
- default y if CIFS=y || SMB_SERVER=y
- default m if CIFS=m || SMB_SERVER=m
-
+source "fs/smb/Kconfig"
source "fs/coda/Kconfig"
source "fs/afs/Kconfig"
source "fs/9p/Kconfig"
diff --git a/fs/Makefile b/fs/Makefile
index 834f1c3dba46..5bfdbf0d7037 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -95,9 +95,7 @@ obj-$(CONFIG_LOCKD) += lockd/
obj-$(CONFIG_NLS) += nls/
obj-y += unicode/
obj-$(CONFIG_SYSV_FS) += sysv/
-obj-$(CONFIG_SMBFS_COMMON) += smbfs_common/
-obj-$(CONFIG_CIFS) += cifs/
-obj-$(CONFIG_SMB_SERVER) += ksmbd/
+obj-$(CONFIG_SMBFS) += smb/
obj-$(CONFIG_HPFS_FS) += hpfs/
obj-$(CONFIG_NTFS_FS) += ntfs/
obj-$(CONFIG_NTFS3_FS) += ntfs3/
diff --git a/fs/smb/Kconfig b/fs/smb/Kconfig
new file mode 100644
index 000000000000..ef425789fa6a
--- /dev/null
+++ b/fs/smb/Kconfig
@@ -0,0 +1,11 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# smbfs configuration
+
+source "fs/smb/client/Kconfig"
+source "fs/smb/server/Kconfig"
+
+config SMBFS
+ tristate
+ default y if CIFS=y || SMB_SERVER=y
+ default m if CIFS=m || SMB_SERVER=m
diff --git a/fs/smb/Makefile b/fs/smb/Makefile
new file mode 100644
index 000000000000..9a1bf59a1a65
--- /dev/null
+++ b/fs/smb/Makefile
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_SMBFS) += common/
+obj-$(CONFIG_CIFS) += client/
+obj-$(CONFIG_SMB_SERVER) += server/
diff --git a/fs/cifs/Kconfig b/fs/smb/client/Kconfig
similarity index 100%
rename from fs/cifs/Kconfig
rename to fs/smb/client/Kconfig
diff --git a/fs/cifs/Makefile b/fs/smb/client/Makefile
similarity index 100%
rename from fs/cifs/Makefile
rename to fs/smb/client/Makefile
diff --git a/fs/cifs/asn1.c b/fs/smb/client/asn1.c
similarity index 100%
rename from fs/cifs/asn1.c
rename to fs/smb/client/asn1.c
diff --git a/fs/cifs/cached_dir.c b/fs/smb/client/cached_dir.c
similarity index 100%
rename from fs/cifs/cached_dir.c
rename to fs/smb/client/cached_dir.c
diff --git a/fs/cifs/cached_dir.h b/fs/smb/client/cached_dir.h
similarity index 100%
rename from fs/cifs/cached_dir.h
rename to fs/smb/client/cached_dir.h
diff --git a/fs/cifs/cifs_debug.c b/fs/smb/client/cifs_debug.c
similarity index 100%
rename from fs/cifs/cifs_debug.c
rename to fs/smb/client/cifs_debug.c
diff --git a/fs/cifs/cifs_debug.h b/fs/smb/client/cifs_debug.h
similarity index 100%
rename from fs/cifs/cifs_debug.h
rename to fs/smb/client/cifs_debug.h
diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/smb/client/cifs_dfs_ref.c
similarity index 100%
rename from fs/cifs/cifs_dfs_ref.c
rename to fs/smb/client/cifs_dfs_ref.c
diff --git a/fs/cifs/cifs_fs_sb.h b/fs/smb/client/cifs_fs_sb.h
similarity index 100%
rename from fs/cifs/cifs_fs_sb.h
rename to fs/smb/client/cifs_fs_sb.h
diff --git a/fs/cifs/cifs_ioctl.h b/fs/smb/client/cifs_ioctl.h
similarity index 100%
rename from fs/cifs/cifs_ioctl.h
rename to fs/smb/client/cifs_ioctl.h
diff --git a/fs/cifs/cifs_spnego.c b/fs/smb/client/cifs_spnego.c
similarity index 100%
rename from fs/cifs/cifs_spnego.c
rename to fs/smb/client/cifs_spnego.c
diff --git a/fs/cifs/cifs_spnego.h b/fs/smb/client/cifs_spnego.h
similarity index 100%
rename from fs/cifs/cifs_spnego.h
rename to fs/smb/client/cifs_spnego.h
diff --git a/fs/cifs/cifs_spnego_negtokeninit.asn1 b/fs/smb/client/cifs_spnego_negtokeninit.asn1
similarity index 100%
rename from fs/cifs/cifs_spnego_negtokeninit.asn1
rename to fs/smb/client/cifs_spnego_negtokeninit.asn1
diff --git a/fs/cifs/cifs_swn.c b/fs/smb/client/cifs_swn.c
similarity index 100%
rename from fs/cifs/cifs_swn.c
rename to fs/smb/client/cifs_swn.c
diff --git a/fs/cifs/cifs_swn.h b/fs/smb/client/cifs_swn.h
similarity index 100%
rename from fs/cifs/cifs_swn.h
rename to fs/smb/client/cifs_swn.h
diff --git a/fs/cifs/cifs_unicode.c b/fs/smb/client/cifs_unicode.c
similarity index 100%
rename from fs/cifs/cifs_unicode.c
rename to fs/smb/client/cifs_unicode.c
diff --git a/fs/cifs/cifs_unicode.h b/fs/smb/client/cifs_unicode.h
similarity index 100%
rename from fs/cifs/cifs_unicode.h
rename to fs/smb/client/cifs_unicode.h
diff --git a/fs/cifs/cifs_uniupr.h b/fs/smb/client/cifs_uniupr.h
similarity index 100%
rename from fs/cifs/cifs_uniupr.h
rename to fs/smb/client/cifs_uniupr.h
diff --git a/fs/cifs/cifsacl.c b/fs/smb/client/cifsacl.c
similarity index 100%
rename from fs/cifs/cifsacl.c
rename to fs/smb/client/cifsacl.c
diff --git a/fs/cifs/cifsacl.h b/fs/smb/client/cifsacl.h
similarity index 100%
rename from fs/cifs/cifsacl.h
rename to fs/smb/client/cifsacl.h
diff --git a/fs/cifs/cifsencrypt.c b/fs/smb/client/cifsencrypt.c
similarity index 99%
rename from fs/cifs/cifsencrypt.c
rename to fs/smb/client/cifsencrypt.c
index 357bd27a7fd1..ef4c2e3c9fa6 100644
--- a/fs/cifs/cifsencrypt.c
+++ b/fs/smb/client/cifsencrypt.c
@@ -21,7 +21,7 @@
#include <linux/random.h>
#include <linux/highmem.h>
#include <linux/fips.h>
-#include "../smbfs_common/arc4.h"
+#include "../common/arc4.h"
#include <crypto/aead.h>

/*
diff --git a/fs/cifs/cifsfs.c b/fs/smb/client/cifsfs.c
similarity index 100%
rename from fs/cifs/cifsfs.c
rename to fs/smb/client/cifsfs.c
diff --git a/fs/cifs/cifsfs.h b/fs/smb/client/cifsfs.h
similarity index 100%
rename from fs/cifs/cifsfs.h
rename to fs/smb/client/cifsfs.h
diff --git a/fs/cifs/cifsglob.h b/fs/smb/client/cifsglob.h
similarity index 99%
rename from fs/cifs/cifsglob.h
rename to fs/smb/client/cifsglob.h
index 5f8fd20951af..0d84bb1a8cd9 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/smb/client/cifsglob.h
@@ -24,7 +24,7 @@
#include "cifsacl.h"
#include <crypto/internal/hash.h>
#include <uapi/linux/cifs/cifs_mount.h>
-#include "../smbfs_common/smb2pdu.h"
+#include "../common/smb2pdu.h"
#include "smb2pdu.h"
#include <linux/filelock.h>

diff --git a/fs/cifs/cifspdu.h b/fs/smb/client/cifspdu.h
similarity index 99%
rename from fs/cifs/cifspdu.h
rename to fs/smb/client/cifspdu.h
index 445e3eaebcc1..e17222fec9d2 100644
--- a/fs/cifs/cifspdu.h
+++ b/fs/smb/client/cifspdu.h
@@ -11,7 +11,7 @@

#include <net/sock.h>
#include <asm/unaligned.h>
-#include "../smbfs_common/smbfsctl.h"
+#include "../common/smbfsctl.h"

#define CIFS_PROT 0
#define POSIX_PROT (CIFS_PROT+1)
diff --git a/fs/cifs/cifsproto.h b/fs/smb/client/cifsproto.h
similarity index 100%
rename from fs/cifs/cifsproto.h
rename to fs/smb/client/cifsproto.h
diff --git a/fs/cifs/cifsroot.c b/fs/smb/client/cifsroot.c
similarity index 100%
rename from fs/cifs/cifsroot.c
rename to fs/smb/client/cifsroot.c
diff --git a/fs/cifs/cifssmb.c b/fs/smb/client/cifssmb.c
similarity index 100%
rename from fs/cifs/cifssmb.c
rename to fs/smb/client/cifssmb.c
diff --git a/fs/cifs/connect.c b/fs/smb/client/connect.c
similarity index 100%
rename from fs/cifs/connect.c
rename to fs/smb/client/connect.c
diff --git a/fs/cifs/dfs.c b/fs/smb/client/dfs.c
similarity index 100%
rename from fs/cifs/dfs.c
rename to fs/smb/client/dfs.c
diff --git a/fs/cifs/dfs.h b/fs/smb/client/dfs.h
similarity index 100%
rename from fs/cifs/dfs.h
rename to fs/smb/client/dfs.h
diff --git a/fs/cifs/dfs_cache.c b/fs/smb/client/dfs_cache.c
similarity index 100%
rename from fs/cifs/dfs_cache.c
rename to fs/smb/client/dfs_cache.c
diff --git a/fs/cifs/dfs_cache.h b/fs/smb/client/dfs_cache.h
similarity index 100%
rename from fs/cifs/dfs_cache.h
rename to fs/smb/client/dfs_cache.h
diff --git a/fs/cifs/dir.c b/fs/smb/client/dir.c
similarity index 100%
rename from fs/cifs/dir.c
rename to fs/smb/client/dir.c
diff --git a/fs/cifs/dns_resolve.c b/fs/smb/client/dns_resolve.c
similarity index 100%
rename from fs/cifs/dns_resolve.c
rename to fs/smb/client/dns_resolve.c
diff --git a/fs/cifs/dns_resolve.h b/fs/smb/client/dns_resolve.h
similarity index 100%
rename from fs/cifs/dns_resolve.h
rename to fs/smb/client/dns_resolve.h
diff --git a/fs/cifs/export.c b/fs/smb/client/export.c
similarity index 100%
rename from fs/cifs/export.c
rename to fs/smb/client/export.c
diff --git a/fs/cifs/file.c b/fs/smb/client/file.c
similarity index 100%
rename from fs/cifs/file.c
rename to fs/smb/client/file.c
diff --git a/fs/cifs/fs_context.c b/fs/smb/client/fs_context.c
similarity index 100%
rename from fs/cifs/fs_context.c
rename to fs/smb/client/fs_context.c
diff --git a/fs/cifs/fs_context.h b/fs/smb/client/fs_context.h
similarity index 100%
rename from fs/cifs/fs_context.h
rename to fs/smb/client/fs_context.h
diff --git a/fs/cifs/fscache.c b/fs/smb/client/fscache.c
similarity index 100%
rename from fs/cifs/fscache.c
rename to fs/smb/client/fscache.c
diff --git a/fs/cifs/fscache.h b/fs/smb/client/fscache.h
similarity index 100%
rename from fs/cifs/fscache.h
rename to fs/smb/client/fscache.h
diff --git a/fs/cifs/inode.c b/fs/smb/client/inode.c
similarity index 100%
rename from fs/cifs/inode.c
rename to fs/smb/client/inode.c
diff --git a/fs/cifs/ioctl.c b/fs/smb/client/ioctl.c
similarity index 100%
rename from fs/cifs/ioctl.c
rename to fs/smb/client/ioctl.c
diff --git a/fs/cifs/link.c b/fs/smb/client/link.c
similarity index 100%
rename from fs/cifs/link.c
rename to fs/smb/client/link.c
diff --git a/fs/cifs/misc.c b/fs/smb/client/misc.c
similarity index 100%
rename from fs/cifs/misc.c
rename to fs/smb/client/misc.c
diff --git a/fs/cifs/netlink.c b/fs/smb/client/netlink.c
similarity index 100%
rename from fs/cifs/netlink.c
rename to fs/smb/client/netlink.c
diff --git a/fs/cifs/netlink.h b/fs/smb/client/netlink.h
similarity index 100%
rename from fs/cifs/netlink.h
rename to fs/smb/client/netlink.h
diff --git a/fs/cifs/netmisc.c b/fs/smb/client/netmisc.c
similarity index 100%
rename from fs/cifs/netmisc.c
rename to fs/smb/client/netmisc.c
diff --git a/fs/cifs/nterr.c b/fs/smb/client/nterr.c
similarity index 100%
rename from fs/cifs/nterr.c
rename to fs/smb/client/nterr.c
diff --git a/fs/cifs/nterr.h b/fs/smb/client/nterr.h
similarity index 100%
rename from fs/cifs/nterr.h
rename to fs/smb/client/nterr.h
diff --git a/fs/cifs/ntlmssp.h b/fs/smb/client/ntlmssp.h
similarity index 100%
rename from fs/cifs/ntlmssp.h
rename to fs/smb/client/ntlmssp.h
diff --git a/fs/cifs/readdir.c b/fs/smb/client/readdir.c
similarity index 100%
rename from fs/cifs/readdir.c
rename to fs/smb/client/readdir.c
diff --git a/fs/cifs/rfc1002pdu.h b/fs/smb/client/rfc1002pdu.h
similarity index 100%
rename from fs/cifs/rfc1002pdu.h
rename to fs/smb/client/rfc1002pdu.h
diff --git a/fs/cifs/sess.c b/fs/smb/client/sess.c
similarity index 100%
rename from fs/cifs/sess.c
rename to fs/smb/client/sess.c
diff --git a/fs/cifs/smb1ops.c b/fs/smb/client/smb1ops.c
similarity index 100%
rename from fs/cifs/smb1ops.c
rename to fs/smb/client/smb1ops.c
diff --git a/fs/cifs/smb2file.c b/fs/smb/client/smb2file.c
similarity index 100%
rename from fs/cifs/smb2file.c
rename to fs/smb/client/smb2file.c
diff --git a/fs/cifs/smb2glob.h b/fs/smb/client/smb2glob.h
similarity index 100%
rename from fs/cifs/smb2glob.h
rename to fs/smb/client/smb2glob.h
diff --git a/fs/cifs/smb2inode.c b/fs/smb/client/smb2inode.c
similarity index 100%
rename from fs/cifs/smb2inode.c
rename to fs/smb/client/smb2inode.c
diff --git a/fs/cifs/smb2maperror.c b/fs/smb/client/smb2maperror.c
similarity index 100%
rename from fs/cifs/smb2maperror.c
rename to fs/smb/client/smb2maperror.c
diff --git a/fs/cifs/smb2misc.c b/fs/smb/client/smb2misc.c
similarity index 100%
rename from fs/cifs/smb2misc.c
rename to fs/smb/client/smb2misc.c
diff --git a/fs/cifs/smb2ops.c b/fs/smb/client/smb2ops.c
similarity index 100%
rename from fs/cifs/smb2ops.c
rename to fs/smb/client/smb2ops.c
diff --git a/fs/cifs/smb2pdu.c b/fs/smb/client/smb2pdu.c
similarity index 100%
rename from fs/cifs/smb2pdu.c
rename to fs/smb/client/smb2pdu.c
diff --git a/fs/cifs/smb2pdu.h b/fs/smb/client/smb2pdu.h
similarity index 100%
rename from fs/cifs/smb2pdu.h
rename to fs/smb/client/smb2pdu.h
diff --git a/fs/cifs/smb2proto.h b/fs/smb/client/smb2proto.h
similarity index 100%
rename from fs/cifs/smb2proto.h
rename to fs/smb/client/smb2proto.h
diff --git a/fs/cifs/smb2status.h b/fs/smb/client/smb2status.h
similarity index 100%
rename from fs/cifs/smb2status.h
rename to fs/smb/client/smb2status.h
diff --git a/fs/cifs/smb2transport.c b/fs/smb/client/smb2transport.c
similarity index 100%
rename from fs/cifs/smb2transport.c
rename to fs/smb/client/smb2transport.c
diff --git a/fs/cifs/smbdirect.c b/fs/smb/client/smbdirect.c
similarity index 100%
rename from fs/cifs/smbdirect.c
rename to fs/smb/client/smbdirect.c
diff --git a/fs/cifs/smbdirect.h b/fs/smb/client/smbdirect.h
similarity index 100%
rename from fs/cifs/smbdirect.h
rename to fs/smb/client/smbdirect.h
diff --git a/fs/cifs/smbencrypt.c b/fs/smb/client/smbencrypt.c
similarity index 98%
rename from fs/cifs/smbencrypt.c
rename to fs/smb/client/smbencrypt.c
index 4a0487753869..f0ce26414f17 100644
--- a/fs/cifs/smbencrypt.c
+++ b/fs/smb/client/smbencrypt.c
@@ -24,7 +24,7 @@
#include "cifsglob.h"
#include "cifs_debug.h"
#include "cifsproto.h"
-#include "../smbfs_common/md4.h"
+#include "../common/md4.h"

#ifndef false
#define false 0
diff --git a/fs/cifs/smberr.h b/fs/smb/client/smberr.h
similarity index 100%
rename from fs/cifs/smberr.h
rename to fs/smb/client/smberr.h
diff --git a/fs/cifs/trace.c b/fs/smb/client/trace.c
similarity index 100%
rename from fs/cifs/trace.c
rename to fs/smb/client/trace.c
diff --git a/fs/cifs/trace.h b/fs/smb/client/trace.h
similarity index 100%
rename from fs/cifs/trace.h
rename to fs/smb/client/trace.h
diff --git a/fs/cifs/transport.c b/fs/smb/client/transport.c
similarity index 100%
rename from fs/cifs/transport.c
rename to fs/smb/client/transport.c
diff --git a/fs/cifs/unc.c b/fs/smb/client/unc.c
similarity index 100%
rename from fs/cifs/unc.c
rename to fs/smb/client/unc.c
diff --git a/fs/cifs/winucase.c b/fs/smb/client/winucase.c
similarity index 100%
rename from fs/cifs/winucase.c
rename to fs/smb/client/winucase.c
diff --git a/fs/cifs/xattr.c b/fs/smb/client/xattr.c
similarity index 100%
rename from fs/cifs/xattr.c
rename to fs/smb/client/xattr.c
diff --git a/fs/smbfs_common/Makefile b/fs/smb/common/Makefile
similarity index 100%
rename from fs/smbfs_common/Makefile
rename to fs/smb/common/Makefile
diff --git a/fs/smbfs_common/arc4.h b/fs/smb/common/arc4.h
similarity index 100%
rename from fs/smbfs_common/arc4.h
rename to fs/smb/common/arc4.h
diff --git a/fs/smbfs_common/cifs_arc4.c b/fs/smb/common/cifs_arc4.c
similarity index 100%
rename from fs/smbfs_common/cifs_arc4.c
rename to fs/smb/common/cifs_arc4.c
diff --git a/fs/smbfs_common/cifs_md4.c b/fs/smb/common/cifs_md4.c
similarity index 100%
rename from fs/smbfs_common/cifs_md4.c
rename to fs/smb/common/cifs_md4.c
diff --git a/fs/smbfs_common/md4.h b/fs/smb/common/md4.h
similarity index 100%
rename from fs/smbfs_common/md4.h
rename to fs/smb/common/md4.h
diff --git a/fs/smbfs_common/smb2pdu.h b/fs/smb/common/smb2pdu.h
similarity index 100%
rename from fs/smbfs_common/smb2pdu.h
rename to fs/smb/common/smb2pdu.h
diff --git a/fs/smbfs_common/smbfsctl.h b/fs/smb/common/smbfsctl.h
similarity index 100%
rename from fs/smbfs_common/smbfsctl.h
rename to fs/smb/common/smbfsctl.h
diff --git a/fs/ksmbd/Kconfig b/fs/smb/server/Kconfig
similarity index 100%
rename from fs/ksmbd/Kconfig
rename to fs/smb/server/Kconfig
diff --git a/fs/ksmbd/Makefile b/fs/smb/server/Makefile
similarity index 100%
rename from fs/ksmbd/Makefile
rename to fs/smb/server/Makefile
diff --git a/fs/ksmbd/asn1.c b/fs/smb/server/asn1.c
similarity index 100%
rename from fs/ksmbd/asn1.c
rename to fs/smb/server/asn1.c
diff --git a/fs/ksmbd/asn1.h b/fs/smb/server/asn1.h
similarity index 100%
rename from fs/ksmbd/asn1.h
rename to fs/smb/server/asn1.h
diff --git a/fs/ksmbd/auth.c b/fs/smb/server/auth.c
similarity index 99%
rename from fs/ksmbd/auth.c
rename to fs/smb/server/auth.c
index df8fb076f6f1..5e5e120edcc2 100644
--- a/fs/ksmbd/auth.c
+++ b/fs/smb/server/auth.c
@@ -29,7 +29,7 @@
#include "mgmt/user_config.h"
#include "crypto_ctx.h"
#include "transport_ipc.h"
-#include "../smbfs_common/arc4.h"
+#include "../common/arc4.h"

/*
* Fixed format data defining GSS header and fixed string
diff --git a/fs/ksmbd/auth.h b/fs/smb/server/auth.h
similarity index 100%
rename from fs/ksmbd/auth.h
rename to fs/smb/server/auth.h
diff --git a/fs/ksmbd/connection.c b/fs/smb/server/connection.c
similarity index 100%
rename from fs/ksmbd/connection.c
rename to fs/smb/server/connection.c
diff --git a/fs/ksmbd/connection.h b/fs/smb/server/connection.h
similarity index 100%
rename from fs/ksmbd/connection.h
rename to fs/smb/server/connection.h
diff --git a/fs/ksmbd/crypto_ctx.c b/fs/smb/server/crypto_ctx.c
similarity index 100%
rename from fs/ksmbd/crypto_ctx.c
rename to fs/smb/server/crypto_ctx.c
diff --git a/fs/ksmbd/crypto_ctx.h b/fs/smb/server/crypto_ctx.h
similarity index 100%
rename from fs/ksmbd/crypto_ctx.h
rename to fs/smb/server/crypto_ctx.h
diff --git a/fs/ksmbd/glob.h b/fs/smb/server/glob.h
similarity index 100%
rename from fs/ksmbd/glob.h
rename to fs/smb/server/glob.h
diff --git a/fs/ksmbd/ksmbd_netlink.h b/fs/smb/server/ksmbd_netlink.h
similarity index 100%
rename from fs/ksmbd/ksmbd_netlink.h
rename to fs/smb/server/ksmbd_netlink.h
diff --git a/fs/ksmbd/ksmbd_spnego_negtokeninit.asn1 b/fs/smb/server/ksmbd_spnego_negtokeninit.asn1
similarity index 100%
rename from fs/ksmbd/ksmbd_spnego_negtokeninit.asn1
rename to fs/smb/server/ksmbd_spnego_negtokeninit.asn1
diff --git a/fs/ksmbd/ksmbd_spnego_negtokentarg.asn1 b/fs/smb/server/ksmbd_spnego_negtokentarg.asn1
similarity index 100%
rename from fs/ksmbd/ksmbd_spnego_negtokentarg.asn1
rename to fs/smb/server/ksmbd_spnego_negtokentarg.asn1
diff --git a/fs/ksmbd/ksmbd_work.c b/fs/smb/server/ksmbd_work.c
similarity index 100%
rename from fs/ksmbd/ksmbd_work.c
rename to fs/smb/server/ksmbd_work.c
diff --git a/fs/ksmbd/ksmbd_work.h b/fs/smb/server/ksmbd_work.h
similarity index 100%
rename from fs/ksmbd/ksmbd_work.h
rename to fs/smb/server/ksmbd_work.h
diff --git a/fs/ksmbd/mgmt/ksmbd_ida.c b/fs/smb/server/mgmt/ksmbd_ida.c
similarity index 100%
rename from fs/ksmbd/mgmt/ksmbd_ida.c
rename to fs/smb/server/mgmt/ksmbd_ida.c
diff --git a/fs/ksmbd/mgmt/ksmbd_ida.h b/fs/smb/server/mgmt/ksmbd_ida.h
similarity index 100%
rename from fs/ksmbd/mgmt/ksmbd_ida.h
rename to fs/smb/server/mgmt/ksmbd_ida.h
diff --git a/fs/ksmbd/mgmt/share_config.c b/fs/smb/server/mgmt/share_config.c
similarity index 100%
rename from fs/ksmbd/mgmt/share_config.c
rename to fs/smb/server/mgmt/share_config.c
diff --git a/fs/ksmbd/mgmt/share_config.h b/fs/smb/server/mgmt/share_config.h
similarity index 100%
rename from fs/ksmbd/mgmt/share_config.h
rename to fs/smb/server/mgmt/share_config.h
diff --git a/fs/ksmbd/mgmt/tree_connect.c b/fs/smb/server/mgmt/tree_connect.c
similarity index 100%
rename from fs/ksmbd/mgmt/tree_connect.c
rename to fs/smb/server/mgmt/tree_connect.c
diff --git a/fs/ksmbd/mgmt/tree_connect.h b/fs/smb/server/mgmt/tree_connect.h
similarity index 100%
rename from fs/ksmbd/mgmt/tree_connect.h
rename to fs/smb/server/mgmt/tree_connect.h
diff --git a/fs/ksmbd/mgmt/user_config.c b/fs/smb/server/mgmt/user_config.c
similarity index 100%
rename from fs/ksmbd/mgmt/user_config.c
rename to fs/smb/server/mgmt/user_config.c
diff --git a/fs/ksmbd/mgmt/user_config.h b/fs/smb/server/mgmt/user_config.h
similarity index 100%
rename from fs/ksmbd/mgmt/user_config.h
rename to fs/smb/server/mgmt/user_config.h
diff --git a/fs/ksmbd/mgmt/user_session.c b/fs/smb/server/mgmt/user_session.c
similarity index 100%
rename from fs/ksmbd/mgmt/user_session.c
rename to fs/smb/server/mgmt/user_session.c
diff --git a/fs/ksmbd/mgmt/user_session.h b/fs/smb/server/mgmt/user_session.h
similarity index 100%
rename from fs/ksmbd/mgmt/user_session.h
rename to fs/smb/server/mgmt/user_session.h
diff --git a/fs/ksmbd/misc.c b/fs/smb/server/misc.c
similarity index 100%
rename from fs/ksmbd/misc.c
rename to fs/smb/server/misc.c
diff --git a/fs/ksmbd/misc.h b/fs/smb/server/misc.h
similarity index 100%
rename from fs/ksmbd/misc.h
rename to fs/smb/server/misc.h
diff --git a/fs/ksmbd/ndr.c b/fs/smb/server/ndr.c
similarity index 100%
rename from fs/ksmbd/ndr.c
rename to fs/smb/server/ndr.c
diff --git a/fs/ksmbd/ndr.h b/fs/smb/server/ndr.h
similarity index 100%
rename from fs/ksmbd/ndr.h
rename to fs/smb/server/ndr.h
diff --git a/fs/ksmbd/nterr.h b/fs/smb/server/nterr.h
similarity index 100%
rename from fs/ksmbd/nterr.h
rename to fs/smb/server/nterr.h
diff --git a/fs/ksmbd/ntlmssp.h b/fs/smb/server/ntlmssp.h
similarity index 100%
rename from fs/ksmbd/ntlmssp.h
rename to fs/smb/server/ntlmssp.h
diff --git a/fs/ksmbd/oplock.c b/fs/smb/server/oplock.c
similarity index 100%
rename from fs/ksmbd/oplock.c
rename to fs/smb/server/oplock.c
diff --git a/fs/ksmbd/oplock.h b/fs/smb/server/oplock.h
similarity index 100%
rename from fs/ksmbd/oplock.h
rename to fs/smb/server/oplock.h
diff --git a/fs/ksmbd/server.c b/fs/smb/server/server.c
similarity index 100%
rename from fs/ksmbd/server.c
rename to fs/smb/server/server.c
diff --git a/fs/ksmbd/server.h b/fs/smb/server/server.h
similarity index 100%
rename from fs/ksmbd/server.h
rename to fs/smb/server/server.h
diff --git a/fs/ksmbd/smb2misc.c b/fs/smb/server/smb2misc.c
similarity index 100%
rename from fs/ksmbd/smb2misc.c
rename to fs/smb/server/smb2misc.c
diff --git a/fs/ksmbd/smb2ops.c b/fs/smb/server/smb2ops.c
similarity index 100%
rename from fs/ksmbd/smb2ops.c
rename to fs/smb/server/smb2ops.c
diff --git a/fs/ksmbd/smb2pdu.c b/fs/smb/server/smb2pdu.c
similarity index 100%
rename from fs/ksmbd/smb2pdu.c
rename to fs/smb/server/smb2pdu.c
diff --git a/fs/ksmbd/smb2pdu.h b/fs/smb/server/smb2pdu.h
similarity index 100%
rename from fs/ksmbd/smb2pdu.h
rename to fs/smb/server/smb2pdu.h
diff --git a/fs/ksmbd/smb_common.c b/fs/smb/server/smb_common.c
similarity index 100%
rename from fs/ksmbd/smb_common.c
rename to fs/smb/server/smb_common.c
diff --git a/fs/ksmbd/smb_common.h b/fs/smb/server/smb_common.h
similarity index 99%
rename from fs/ksmbd/smb_common.h
rename to fs/smb/server/smb_common.h
index 9130d2e3cd78..6b0d5f1fe85c 100644
--- a/fs/ksmbd/smb_common.h
+++ b/fs/smb/server/smb_common.h
@@ -10,7 +10,7 @@

#include "glob.h"
#include "nterr.h"
-#include "../smbfs_common/smb2pdu.h"
+#include "../common/smb2pdu.h"
#include "smb2pdu.h"

/* ksmbd's Specific ERRNO */
diff --git a/fs/ksmbd/smbacl.c b/fs/smb/server/smbacl.c
similarity index 100%
rename from fs/ksmbd/smbacl.c
rename to fs/smb/server/smbacl.c
diff --git a/fs/ksmbd/smbacl.h b/fs/smb/server/smbacl.h
similarity index 100%
rename from fs/ksmbd/smbacl.h
rename to fs/smb/server/smbacl.h
diff --git a/fs/ksmbd/smbfsctl.h b/fs/smb/server/smbfsctl.h
similarity index 100%
rename from fs/ksmbd/smbfsctl.h
rename to fs/smb/server/smbfsctl.h
diff --git a/fs/ksmbd/smbstatus.h b/fs/smb/server/smbstatus.h
similarity index 100%
rename from fs/ksmbd/smbstatus.h
rename to fs/smb/server/smbstatus.h
diff --git a/fs/ksmbd/transport_ipc.c b/fs/smb/server/transport_ipc.c
similarity index 100%
rename from fs/ksmbd/transport_ipc.c
rename to fs/smb/server/transport_ipc.c
diff --git a/fs/ksmbd/transport_ipc.h b/fs/smb/server/transport_ipc.h
similarity index 100%
rename from fs/ksmbd/transport_ipc.h
rename to fs/smb/server/transport_ipc.h
diff --git a/fs/ksmbd/transport_rdma.c b/fs/smb/server/transport_rdma.c
similarity index 100%
rename from fs/ksmbd/transport_rdma.c
rename to fs/smb/server/transport_rdma.c
diff --git a/fs/ksmbd/transport_rdma.h b/fs/smb/server/transport_rdma.h
similarity index 100%
rename from fs/ksmbd/transport_rdma.h
rename to fs/smb/server/transport_rdma.h
diff --git a/fs/ksmbd/transport_tcp.c b/fs/smb/server/transport_tcp.c
similarity index 100%
rename from fs/ksmbd/transport_tcp.c
rename to fs/smb/server/transport_tcp.c
diff --git a/fs/ksmbd/transport_tcp.h b/fs/smb/server/transport_tcp.h
similarity index 100%
rename from fs/ksmbd/transport_tcp.h
rename to fs/smb/server/transport_tcp.h
diff --git a/fs/ksmbd/unicode.c b/fs/smb/server/unicode.c
similarity index 100%
rename from fs/ksmbd/unicode.c
rename to fs/smb/server/unicode.c
diff --git a/fs/ksmbd/unicode.h b/fs/smb/server/unicode.h
similarity index 100%
rename from fs/ksmbd/unicode.h
rename to fs/smb/server/unicode.h
diff --git a/fs/ksmbd/uniupr.h b/fs/smb/server/uniupr.h
similarity index 100%
rename from fs/ksmbd/uniupr.h
rename to fs/smb/server/uniupr.h
diff --git a/fs/ksmbd/vfs.c b/fs/smb/server/vfs.c
similarity index 100%
rename from fs/ksmbd/vfs.c
rename to fs/smb/server/vfs.c
diff --git a/fs/ksmbd/vfs.h b/fs/smb/server/vfs.h
similarity index 100%
rename from fs/ksmbd/vfs.h
rename to fs/smb/server/vfs.h
diff --git a/fs/ksmbd/vfs_cache.c b/fs/smb/server/vfs_cache.c
similarity index 100%
rename from fs/ksmbd/vfs_cache.c
rename to fs/smb/server/vfs_cache.c
diff --git a/fs/ksmbd/vfs_cache.h b/fs/smb/server/vfs_cache.h
similarity index 100%
rename from fs/ksmbd/vfs_cache.h
rename to fs/smb/server/vfs_cache.h
diff --git a/fs/ksmbd/xattr.h b/fs/smb/server/xattr.h
similarity index 100%
rename from fs/ksmbd/xattr.h
rename to fs/smb/server/xattr.h
--
2.34.1

From a96717ebb794920dde7740e0349cf4abf60fc6dd Mon Sep 17 00:00:00 2001
From: Steve French <stfrench@xxxxxxxxxxxxx>
Date: Sun, 21 May 2023 22:52:04 -0500
Subject: [PATCH 2/3] cifs: correct references in Documentation to old fs/cifs
path

The fs/cifs directory has moved to fs/smb/client, correct mentions
of this in Documentation and comments.

Acked-by: Namjae Jeon <linkinjeon@xxxxxxxxxx>
Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
---
Documentation/admin-guide/cifs/changes.rst | 4 ++--
Documentation/admin-guide/cifs/usage.rst | 8 ++++----
Documentation/filesystems/cifs/cifsroot.rst | 2 +-
Documentation/userspace-api/ioctl/ioctl-number.rst | 2 +-
fs/smb/server/smbfsctl.h | 2 +-
fs/smb/server/smbstatus.h | 2 +-
6 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/Documentation/admin-guide/cifs/changes.rst b/Documentation/admin-guide/cifs/changes.rst
index 3147bbae9c43..8c42c4de510b 100644
--- a/Documentation/admin-guide/cifs/changes.rst
+++ b/Documentation/admin-guide/cifs/changes.rst
@@ -5,5 +5,5 @@ Changes
See https://wiki.samba.org/index.php/LinuxCIFSKernel for summary
information about fixes/improvements to CIFS/SMB2/SMB3 support (changes
to cifs.ko module) by kernel version (and cifs internal module version).
-This may be easier to read than parsing the output of "git log fs/cifs"
-by release.
+This may be easier to read than parsing the output of
+"git log fs/smb/client" by release.
diff --git a/Documentation/admin-guide/cifs/usage.rst b/Documentation/admin-guide/cifs/usage.rst
index 2e151cd8c2e4..5f936b4b6018 100644
--- a/Documentation/admin-guide/cifs/usage.rst
+++ b/Documentation/admin-guide/cifs/usage.rst
@@ -45,7 +45,7 @@ Installation instructions

If you have built the CIFS vfs as module (successfully) simply
type ``make modules_install`` (or if you prefer, manually copy the file to
-the modules directory e.g. /lib/modules/2.4.10-4GB/kernel/fs/cifs/cifs.ko).
+the modules directory e.g. /lib/modules/6.3.0-060300-generic/kernel/fs/smb/client/cifs.ko).

If you have built the CIFS vfs into the kernel itself, follow the instructions
for your distribution on how to install a new kernel (usually you
@@ -66,15 +66,15 @@ If cifs is built as a module, then the size and number of network buffers
and maximum number of simultaneous requests to one server can be configured.
Changing these from their defaults is not recommended. By executing modinfo::

- modinfo kernel/fs/cifs/cifs.ko
+ modinfo <path to cifs.ko>

-on kernel/fs/cifs/cifs.ko the list of configuration changes that can be made
+on kernel/fs/smb/client/cifs.ko the list of configuration changes that can be made
at module initialization time (by running insmod cifs.ko) can be seen.

Recommendations
===============

-To improve security the SMB2.1 dialect or later (usually will get SMB3) is now
+To improve security the SMB2.1 dialect or later (usually will get SMB3.1.1) is now
the new default. To use old dialects (e.g. to mount Windows XP) use "vers=1.0"
on mount (or vers=2.0 for Windows Vista). Note that the CIFS (vers=1.0) is
much older and less secure than the default dialect SMB3 which includes
diff --git a/Documentation/filesystems/cifs/cifsroot.rst b/Documentation/filesystems/cifs/cifsroot.rst
index 4930bb443134..bf2d9db3acb9 100644
--- a/Documentation/filesystems/cifs/cifsroot.rst
+++ b/Documentation/filesystems/cifs/cifsroot.rst
@@ -59,7 +59,7 @@ the root file system via SMB protocol.
Enables the kernel to mount the root file system via SMB that are
located in the <server-ip> and <share> specified in this option.

-The default mount options are set in fs/cifs/cifsroot.c.
+The default mount options are set in fs/smb/client/cifsroot.c.

server-ip
IPv4 address of the server.
diff --git a/Documentation/userspace-api/ioctl/ioctl-number.rst b/Documentation/userspace-api/ioctl/ioctl-number.rst
index 176e8fc3f31b..4f7b23faebb9 100644
--- a/Documentation/userspace-api/ioctl/ioctl-number.rst
+++ b/Documentation/userspace-api/ioctl/ioctl-number.rst
@@ -363,7 +363,7 @@ Code Seq# Include File Comments
0xCC 00-0F drivers/misc/ibmvmc.h pseries VMC driver
0xCD 01 linux/reiserfs_fs.h
0xCE 01-02 uapi/linux/cxl_mem.h Compute Express Link Memory Devices
-0xCF 02 fs/cifs/ioctl.c
+0xCF 02 fs/smb/client/cifs_ioctl.h
0xDB 00-0F drivers/char/mwave/mwavepub.h
0xDD 00-3F ZFCP device driver see drivers/s390/scsi/
<mailto:aherrman@xxxxxxxxxx>
diff --git a/fs/smb/server/smbfsctl.h b/fs/smb/server/smbfsctl.h
index b98418aae20c..ecdf8f6e0df4 100644
--- a/fs/smb/server/smbfsctl.h
+++ b/fs/smb/server/smbfsctl.h
@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1+ */
/*
- * fs/cifs/smbfsctl.h: SMB, CIFS, SMB2 FSCTL definitions
+ * fs/smb/server/smbfsctl.h: SMB, CIFS, SMB2 FSCTL definitions
*
* Copyright (c) International Business Machines Corp., 2002,2009
* Author(s): Steve French (sfrench@xxxxxxxxxx)
diff --git a/fs/smb/server/smbstatus.h b/fs/smb/server/smbstatus.h
index 108a8b6ed24a..8963deb42404 100644
--- a/fs/smb/server/smbstatus.h
+++ b/fs/smb/server/smbstatus.h
@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1+ */
/*
- * fs/cifs/smb2status.h
+ * fs/server/smb2status.h
*
* SMB2 Status code (network error) definitions
* Definitions are from MS-ERREF
--
2.34.1

From e90e7ed294db836857a3516cc9d15cdad6a994a3 Mon Sep 17 00:00:00 2001
From: Steve French <stfrench@xxxxxxxxxxxxx>
Date: Mon, 22 May 2023 09:50:33 -0500
Subject: [PATCH 3/3] smb3: move Documentation/filesystems/cifs to
Documentation/filesystems/smb

Documentation/filesystems/cifs contains both server and client information
so its pathname is misleading. In addition, the directory fs/smb
now contains both server and client, so move Documentation/filesystems/cifs
to Documentation/filesystems/smb

Suggested-by: Namjae Jeon <linkinjeon@xxxxxxxxxx>
Acked-by: Namjae Jeon <linkinjeon@xxxxxxxxxx>
Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
---
Documentation/filesystems/index.rst | 2 +-
Documentation/filesystems/{cifs => smb}/cifsroot.rst | 0
Documentation/filesystems/{cifs => smb}/index.rst | 0
Documentation/filesystems/{cifs => smb}/ksmbd.rst | 0
MAINTAINERS | 2 +-
5 files changed, 2 insertions(+), 2 deletions(-)
rename Documentation/filesystems/{cifs => smb}/cifsroot.rst (100%)
rename Documentation/filesystems/{cifs => smb}/index.rst (100%)
rename Documentation/filesystems/{cifs => smb}/ksmbd.rst (100%)

diff --git a/Documentation/filesystems/index.rst b/Documentation/filesystems/index.rst
index fbb2b5ada95b..eb252fc972aa 100644
--- a/Documentation/filesystems/index.rst
+++ b/Documentation/filesystems/index.rst
@@ -72,7 +72,6 @@ Documentation for filesystem implementations.
befs
bfs
btrfs
- cifs/index
ceph
coda
configfs
@@ -111,6 +110,7 @@ Documentation for filesystem implementations.
ramfs-rootfs-initramfs
relay
romfs
+ smb/index
spufs/index
squashfs
sysfs
diff --git a/Documentation/filesystems/cifs/cifsroot.rst b/Documentation/filesystems/smb/cifsroot.rst
similarity index 100%
rename from Documentation/filesystems/cifs/cifsroot.rst
rename to Documentation/filesystems/smb/cifsroot.rst
diff --git a/Documentation/filesystems/cifs/index.rst b/Documentation/filesystems/smb/index.rst
similarity index 100%
rename from Documentation/filesystems/cifs/index.rst
rename to Documentation/filesystems/smb/index.rst
diff --git a/Documentation/filesystems/cifs/ksmbd.rst b/Documentation/filesystems/smb/ksmbd.rst
similarity index 100%
rename from Documentation/filesystems/cifs/ksmbd.rst
rename to Documentation/filesystems/smb/ksmbd.rst
diff --git a/MAINTAINERS b/MAINTAINERS
index 902f763e845d..6152a4251ce7 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -11300,7 +11300,7 @@ R: Tom Talpey <tom@xxxxxxxxxx>
L: linux-cifs@xxxxxxxxxxxxxxx
S: Maintained
T: git git://git.samba.org/ksmbd.git
-F: Documentation/filesystems/cifs/ksmbd.rst
+F: Documentation/filesystems/smb/ksmbd.rst
F: fs/smb/common/
F: fs/smb/server/

--
2.34.1