RE: [PATCH v7 00/13] ksmbd: introduce new SMB3 kernel server
From: Namjae Jeon
Date: Thu Aug 05 2021 - 02:25:06 EST
> This is the patch series for ksmbd kernel server.
>
> What is ksmbd ?
> ===============
>
> The SMB family of protocols is the most widely deployed network filesystem protocol, the default on
> Windows and Macs (and even on many phones and tablets), with clients and servers on all major
> operating systems, but lacked a kernel server for Linux. For many cases the current userspace server
> choices were suboptimal either due to memory footprint, performance or difficulty integrating well
> with advanced Linux features.
>
> ksmbd is a new kernel module which implements the server-side of the SMB3 protocol.
> The target is to provide optimized performance, GPLv2 SMB server, better lease handling (distributed
> caching). The bigger goal is to add new features more rapidly (e.g. RDMA aka "smbdirect", and recent
> encryption and signing improvements to the protocol) which are easier to develop on a smaller, more
> tightly optimized kernel server than for example in Samba. The Samba project is much broader in scope
> (tools, security services, LDAP, Active Directory Domain Controller, and a cross platform file server
> for a wider variety of purposes) but the user space file server portion of Samba has proved hard to
> optimize for some Linux workloads, including for smaller devices. This is not meant to replace Samba,
> but rather be an extension to allow better optimizing for Linux, and will continue to integrate well
> with Samba user space tools and libraries where appropriate.
> Working with the Samba team we have already made sure that the configuration files and xattrs are in a
> compatible format between the kernel and user space server.
>
>
> Architecture
> ============
>
> |--- ...
> --------|--- ksmbd/3 - Client 3
> |-------|--- ksmbd/2 - Client 2
> | | ____________________________________________________
> | | |- Client 1 |
> <--- Socket ---|--- ksmbd/1 <<= Authentication : NTLM/NTLM2, Kerberos |
> | | | | <<= SMB engine : SMB2, SMB2.1, SMB3, SMB3.0.2, |
> | | | | SMB3.1.1 |
> | | | |____________________________________________________|
> | | |
> | | |--- VFS --- Local Filesystem
> | |
> KERNEL |--- ksmbd/0(forker kthread)
> ---------------||-------------------------------------------------------
> ---------------||--------
> USER ||
> || communication using NETLINK
> || ______________________________________________
> || | |
> ksmbd.mountd <<= DCE/RPC(srvsvc, wkssvc, samr, lsarpc) |
> ^ | <<= configure shares setting, user accounts |
> | |______________________________________________|
> |
> |------ smb.conf(config file)
> |
> |------ ksmbdpwd.db(user account/password file)
> ^
> ksmbd.adduser ------------|
>
> The subset of performance related operations(open/read/write/close etc.) belong in kernelspace(ksmbd)
> and the other subset which belong to operations(DCE/RPC, user account/share database) which are not
> really related with performance are handled in userspace(ksmbd.mountd).
>
> When the ksmbd.mountd is started, It starts up a forker thread at initialization time and opens a
> dedicated port 445 for listening to SMB requests. Whenever new clients make request, Forker thread
> will accept the client connection and fork a new thread for dedicated communication channel between
> the client and the server.
>
>
> ksmbd feature status
> ====================
>
> ============================== =================================================
> Feature name Status
> ============================== =================================================
> Dialects Supported. SMB2.1 SMB3.0, SMB3.1.1 dialects
> (intentionally excludes security vulnerable SMB1 dialect).
> Auto Negotiation Supported.
> Compound Request Supported.
> Oplock Cache Mechanism Supported.
> SMB2 leases(v1 lease) Supported.
> Directory leases(v2 lease) Planned for future.
> Multi-credits Supported.
> NTLM/NTLMv2 Supported.
> HMAC-SHA256 Signing Supported.
> Secure negotiate Supported.
> Signing Update Supported.
> Pre-authentication integrity Supported.
> SMB3 encryption(CCM, GCM) Supported. (CCM and GCM128 supported, GCM256 in progress)
> SMB direct(RDMA) Partially Supported. SMB3 Multi-channel is required
> to connect to Windows client.
> SMB3 Multi-channel Partially Supported.
> SMB3.1.1 POSIX extension Supported.
> ACLs Partially Supported. only DACLs available, SACLs
> (auditing) is planned for the future. For
> ownership (SIDs) ksmbd generates random subauth
> values(then store it to disk) and use uid/gid
> get from inode as RID for local domain SID.
> The current acl implementation is limited to
> standalone server, not a domain member.
> Integration with Samba tools is being worked on to
> allow future support for running as a domain member.
> Kerberos Supported.
> Durable handle v1,v2 Planned for future.
> Persistent handle Planned for future.
> SMB2 notify Planned for future.
> Sparse file support Supported.
> DCE/RPC support Partially Supported. a few calls(NetShareEnumAll,
> NetServerGetInfo, SAMR, LSARPC) that are needed
> for file server handled via netlink interface from
> ksmbd.mountd. Additional integration with Samba
> tools and libraries via upcall is being investigated
> to allow support for additional DCE/RPC management
> calls (and future support for Witness protocol e.g.)
> ksmbd/nfsd interoperability Planned for future. The features that ksmbd
> support are Leases, Notify, ACLs and Share modes.
> ============================== =================================================
>
> All features required as file server are currently implemented in ksmbd.
> In particular, the implementation of SMB Direct(RDMA) is only currently possible with ksmbd (among
> Linux servers)
>
>
> Stability
> =========
>
> It has been proved to be stable. A significant amount of xfstests pass and are run regularly from
> Linux to Linux:
>
> http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com/#/builders/8/builds/53
I missed updating test result in cover letter.
http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com/#/builders/8/builds/54
>
> In addition regression tests using the broadest SMB3 functional test suite (Samba's "smbtorture") are
> run on every checkin.
> It has already been used by many other open source toolkits and commercial companies that need NAS
> functionality. Their issues have been fixed and contributions are applied into ksmbd. Ksmbd has been
> well tested and verified in the field and market.
>
>
> Mailing list and repositories
> =============================
> - linux-cifs@xxxxxxxxxxxxxxx
> - linux-cifsd-devel@xxxxxxxxxxxxxxxxxxxxx(old and deprecated)
> - https://git.samba.org/?p=ksmbd.git;a=shortlog;h=refs/heads/cifsd-for-next
> - https://github.com/smfrench/smb3-kernel/tree/cifsd-for-next
> - https://github.com/namjaejeon/smb3-kernel/tree/ksmbd-v7-series
> - https://github.com/cifsd-team/ksmbd (out-of-tree)
> - https://github.com/cifsd-team/ksmbd-tools
>
>
> How to run ksmbd
> ================
>
> a. Download ksmbd-tools and compile them.
> - https://github.com/cifsd-team/ksmbd-tools
>
> b. Create user/password for SMB share.
>
> # mkdir /etc/ksmbd/
> # ksmbd.adduser -a <Enter USERNAME for SMB share access>
>
> c. Create /etc/ksmbd/smb.conf file, add SMB share in smb.conf file
> - Refer smb.conf.example and Documentation/configuration.txt
> in ksmbd-tools
>
> d. Insert ksmbd.ko module
>
> # insmod ksmbd.ko
>
> e. Start ksmbd user space daemon
> # ksmbd.mountd
>
> f. Access share from Windows or Linux using SMB
> e.g. "mount -t cifs //server/share /mnt ..."
>
>
> v7:
> - fix wrong compression context size.
> - fix wrong error status return on session setup.
> - set STATUS_INVALID_PARAMETER error status if credit charge is
> invalid.
> - move credit charge verification over smb2 request size verification.
> - fix typo of MS-SMBD.
> - add negotiate context verification.
> - add support for negotiating signing algorithm.
> - Fix potential memory leak in tcp_destroy_socket(). (Marios Makassikis)
> - fix -Wstringop-truncation warnings.
> - Return STATUS_OBJECT_PATH_NOT_FOUND if smb2_creat() returns ENOENT. (Marios Makassikis)
> - don't set RSS capable in FSCTL_QUERY_NETWORK_INTERFACE_INFO.
> - use channel signingkey for binding SMB2 session setup.
> - fix missing error code in smb2_lock.
> - add ipv6_addr_v4mapped check to know if connection from client is ipv4.
> - fix an oops in error handling in smb2_open(). (Dan Carpenter)
>
> v6:
> - Fix read on the uninitialized pointer sess. (Colin Ian King)
> - call mnt_user_ns once in a function.
> - remove unneeded NULL check in for_each_netdev. (Coverity Scan)
> - fix read on the uninitialized send_ctx. (Coverity Scan)
> - fix memory leak smb2_populate_readdir_entry(). (Coverity Scan)
> - fix memory leak in smb_inherit_dacl(). (Coverity Scan)
> - change data type of volatile/persistent id to u64. (Dan Carpenter)
> - delete some stray tabs. (Dan Carpenter)
> - use kasprintf() in ksmbd_vfs_xattr_stream_name(). (Dan Carpenter)
> - fix the running request count decrement.
> - free ksmbd_lock when file is closed.
> - make smb2_find_context_vals return NULL if not found. (Dan Carpenter)
> - handle error cases first in smb2_create_sd_buffers (Dan Carpenter)
> - remove unneeded check_context_err. (Coverity Scan)
> - fix memory leak in ksmbd_vfs_get_sd_xattr(). (Coverity Scan)
> - fix unused err value in smb2_lock. (Coverity Scan)
> - set RDMA capability for FSCTL_QUERY_NETWORK_INTERFACE_INFO.
> - fix an error message in ksmbd_conn_trasnport_init.
> - fix typo in comment.
>
> v5:
> - fix list_add double add BUG_ON trap in setup_async_work().
> - set epoch in smb2_lease_break response.
> - fix possible compile error for asn1.c.
> - remove duplicated argument. (Wan Jiabing)
> - append ksmbd prefix into names for asn1 decoder.
> - fix kfree of uninitialized pointer oid. (Colin Ian King)
> - add support for SMB3 multichannel.
> - remove cache read/trans buffer support. (Christoph Hellwig)
> - initialize variables on the declaration. (Christoph Hellwig)
> - remove ksmbd_vfs_copy_file_range. (Christoph Hellwig)
> - use list_for_each_entry instead of list_for_each. (Christoph Hellwig)
> - use goto instead of duplicating the resoure cleanup in ksmbd_open_fd. (Christoph Hellwig)
> - fix overly long line. (Christoph Hellwig)
> - remove unneeded FIXME comment. (Christoph Hellwig)
> - remove ____ksmbd_align in ksmbd_server.h. (Christoph Hellwig)
> - replace KSMBD_SHARE_CONFIG_PATH with inline function. (Christoph Hellwig)
> - remove ksmbd_err/info. (Christoph Hellwig)
> - opencode to avoid trivial wrappers. (Christoph Hellwig)
> - factor out a ksmbd_validate_entry_in_use helper from __ksmbd_vfs_rename. (Christoph Hellwig)
> - opencode posix acl functions instead of wrappers. (Christoph Hellwig)
> - change stream type macro to enumeration. (Christoph Hellwig)
> - use f_bsize instead of q->limits.logical_block_size. (Christoph Hellwig)
> - remove unneeded NULL check in the list iterator. (Dan Carpenter)
> - use f_bsize in FS_SECTOR_SIZE_INFORMATION. (Christoph Hellwig)
> - move fs/cifsd to fs/ksmbd. (Christoph Hellwig)
> - factor out a ksmbd_vfs_lock_parent helper. (Christoph Hellwig)
> - set MAY_* flags together with open flags. (Christoph Hellwig)
> - reorder and document on-disk strctures and netlink structure in headers. (Christoph Hellwig)
> - remove macros in transport_ipc.c.
> - replace BUFFER_NR_PAGES with inline function.
> - replace KSMBD_ALIGN with kernel ALIGN macro.
> - replace PAYLOAD_HEAD with inline function.
> - remove getting worker state macros.
> - remove and replace macros with inline functions in smb_common.h. (Christoph Hellwig)
> - replace SMB_DIRECT_TRANS macro with inline function. (Christoph Hellwig)
> - replace request and respone buffer macro with inline functions. (Christoph Hellwig)
> - allow PROTECTED_DACL_SECINFO and UNPROTECTED_DACL_SECINFO addition information.
> - replace fp macros with inline functions.
> - relax credit_charge check in smb2_validate_credit_charge(). (Marios Makassikis).
> - add user namespace support. (Christoph Hellwig)
>
> v4:
> - add goto fail in asn1_oid_decode() (Dan Carpenter)
> - use memcmp instead of for loop check in oid_eq(). (Dan Carpenter)
> - add goto fail in neg_token_init_mech_type(). (Dan Carpenter)
> - move fips_enabled check before the str_to_key(). (Dan Carpenter)
> - just return smbhash() instead of using rc return value. (Dan Carpenter)
> - move ret check before the out label. (Dan Carpenter)
> - simplify error handling in ksmbd_auth_ntlm(). (Dan Carpenter)
> - remove unneeded type casting. (Dan Carpenter)
> - set error return value for memcmp() difference. (Dan Carpenter)
> - return zero in always success case. (Dan Carpenter)
> - never return 1 on failure. (Dan Carpenter)
> - add the check if nvec is zero. (Dan Carpenter)
> - len can never be negative in ksmbd_init_sg(). (Dan Carpenter)
> - remove unneeded initialization of rc variable in ksmbd_crypt_message(). (Dan Carpenter)
> - fix wrong return value in ksmbd_crypt_message(). (Dan Carpenter)
> - change success handling to failure handling. (Dan Carpenter)
> - add default case in switch statment in alloc_shash_desc().(Dan Carpenter)
> - call kzalloc() directly instead of wrapper. (Dan Carpenter)
> - simplify error handling in ksmbd_gen_preauth_integrity_hash(). (Dan Carpenter)
> - return -ENOMEM about error from ksmbd_crypto_ctx_find_xxx calls. (Dan Carpenter)
> - alignment match open parenthesis. (Dan Carpenter)
> - add the check to prevent potential overflow with smb_strtoUTF16() and
> UNICODE_LEN(). (Dan Carpenter)
> - braces {} should be used on all arms of this statement.
> - spaces preferred around that '/'.
> - don't use multiple blank lines.
> - No space is necessary after a cast.
> - Blank lines aren't necessary after an open brace '{'.
> - remove unnecessary parentheses around.
> - Prefer kernel type 'u16' over 'uint16_t'.
> - lookup a file with LOOKUP_FOLLOW only if 'follow symlinks = yes'.
> - fix Control flow issues in ksmbd_build_ntlmssp_challenge_blob().
> - fix memleak in ksmbd_vfs_stream_write(). (Yang Yingliang)
> - fix memleak in ksmbd_vfs_stream_read(). (Yang Yingliang)
> - check return value of ksmbd_vfs_getcasexattr() correctly.
> - fix potential read overflow in ksmbd_vfs_stream_read().
>
> v3:
> - fix boolreturn.cocci warnings. (kernel test robot)
> - fix xfstests generic/504 test failure.
> - do not use 0 or 0xFFFFFFFF for TreeID. (Marios Makassikis)
> - add support for FSCTL_DUPLICATE_EXTENTS_TO_FILE.
> - fix build error without CONFIG_OID_REGISTRY. (Wei Yongjun)
> - fix invalid memory access in smb2_write(). (Coverity Scan)
> - add support for AES256 encryption.
> - fix potential null-ptr-deref in destroy_previous_session(). (Marios Makassikis).
> - update out_buf_len in smb2_populate_readdir_entry(). (Marios Makassikis)
> - handle ksmbd_session_rpc_open() failure in create_smb2_pipe(). (Marios Makassikis)
> - call smb2_set_err_rsp() in smb2_read/smb2_write error path. (Marios Makassikis)
> - add ksmbd/nfsd interoperability to feature table. (Amir Goldstein)
> - fix regression in smb2_get_info. (Sebastian Gottschall)
> - remove is_attributes_write_allowed() wrapper. (Marios Makassikis)
> - update access check in set_file_allocation_info/set_end_of_file_info. (Marios Makassikis)
>
> v2:
> - fix an error code in smb2_read(). (Dan Carpenter)
> - fix error handling in ksmbd_server_init() (Dan Carpenter)
> - remove redundant assignment to variable err. (Colin Ian King)
> - remove unneeded macros.
> - fix wrong use of rw semaphore in __session_create().
> - use kmalloc() for small allocations.
> - add the check to work file lock and rename behaviors like Windows
> unless POSIX extensions are negotiated.
> - clean-up codes using chechpatch.pl --strict.
> - merge time_wrappers.h into smb_common.h.
> - fix wrong prototype in comment (kernel test robot).
> - fix implicit declaration of function 'groups_alloc' (kernel test robot).
> - fix implicit declaration of function 'locks_alloc_lock' (kernel test robot).
> - remove smack inherit leftovers.
> - remove calling d_path in error paths.
> - handle unhashed dentry in ksmbd_vfs_mkdir.
> - use file_inode() instead of d_inode().
> - remove useless error handling in ksmbd_vfs_read.
> - use xarray instead of linked list for tree connect list.
> - remove stale prototype and variables.
> - fix memory leak when loop ends (coverity-bot, Muhammad Usama Anjum).
> - use kfree to free memory allocated by kmalloc or kzalloc (Muhammad Usama Anjum).
> - fix memdup.cocci warnings (kernel test robot)
> - remove wrappers of kvmalloc/kvfree.
> - change the reference to configuration.txt (Mauro Carvalho Chehab).
> - prevent a integer overflow in wm_alloc().
> - select SG_POOL for SMB_SERVER_SMBDIRECT. (Zhang Xiaoxu).
> - remove unused including <linux/version.h> (Tian Tao).
> - declare ida statically.
> - add the check if parent is stable by unexpected rename.
> - get parent dentry from child in ksmbd_vfs_remove_file().
> - re-implement ksmbd_vfs_kern_path.
> - fix reference count decrement of unclaimed file in __ksmbd_lookup_fd.
> - remove smb2_put_name(). (Marios Makassikis).
> - remove unused smberr.h, nterr.c and netmisc.c.
> - fix potential null-ptr-deref in smb2_open() (Marios Makassikis).
> - use d_inode().
> - remove the dead code of unimplemented durable handle.
> - use the generic one in lib/asn1_decoder.c
>
> v1:
> - fix a handful of spelling mistakes (Colin Ian King)
> - fix a precedence bug in parse_dacl() (Dan Carpenter)
> - fix a IS_ERR() vs NULL bug (Dan Carpenter)
> - fix a use after free on error path (Dan Carpenter)
> - update cifsd.rst Documentation
> - remove unneeded FIXME comments
> - fix static checker warnings (Dan Carpenter)
> - fix WARNING: unmet direct dependencies detected for CRYPTO_ARC4 (Randy Dunlap)
> - uniquify extract_sharename() (Stephen Rothwell)
> - fix WARNING: document isn't included in any toctree (Stephen Rothwell)
> - fix WARNING: Title overline too short (Stephen Rothwell)
> - fix warning: variable 'total_ace_size' and 'posix_ccontext'set but not used (kernel test rotbot)
> - fix incorrect function comments (kernel test robot)
>
> Namjae Jeon (13):
> ksmbd: add document
> ksmbd: add server handler
> ksmbd: add tcp transport layer
> ksmbd: add ipc transport layer
> ksmbd: add rdma transport layer
> ksmbd: add a utility code that tracks (and caches) sessions data
> ksmbd: add authentication
> ksmbd: add smb3 engine part 1
> ksmbd: add smb3 engine part 2
> ksmbd: add oplock/lease cache mechanism
> ksmbd: add file operations
> ksmbd: add Kconfig and Makefile
> MAINTAINERS: add ksmbd kernel server
>
> Documentation/filesystems/cifs/index.rst | 10 +
> Documentation/filesystems/cifs/ksmbd.rst | 164 +
> Documentation/filesystems/index.rst | 2 +-
> MAINTAINERS | 9 +
> fs/Kconfig | 1 +
> fs/Makefile | 1 +
> fs/ksmbd/Kconfig | 69 +
> fs/ksmbd/Makefile | 20 +
> fs/ksmbd/asn1.c | 343 +
> fs/ksmbd/asn1.h | 21 +
> fs/ksmbd/auth.c | 1364 ++++
> fs/ksmbd/auth.h | 67 +
> fs/ksmbd/connection.c | 413 ++
> fs/ksmbd/connection.h | 213 +
> fs/ksmbd/crypto_ctx.c | 282 +
> fs/ksmbd/crypto_ctx.h | 74 +
> fs/ksmbd/glob.h | 49 +
> fs/ksmbd/ksmbd_netlink.h | 395 +
> fs/ksmbd/ksmbd_spnego_negtokeninit.asn1 | 31 +
> fs/ksmbd/ksmbd_spnego_negtokentarg.asn1 | 19 +
> fs/ksmbd/ksmbd_work.c | 80 +
> fs/ksmbd/ksmbd_work.h | 117 +
> fs/ksmbd/mgmt/ksmbd_ida.c | 46 +
> fs/ksmbd/mgmt/ksmbd_ida.h | 34 +
> fs/ksmbd/mgmt/share_config.c | 238 +
> fs/ksmbd/mgmt/share_config.h | 81 +
> fs/ksmbd/mgmt/tree_connect.c | 121 +
> fs/ksmbd/mgmt/tree_connect.h | 56 +
> fs/ksmbd/mgmt/user_config.c | 69 +
> fs/ksmbd/mgmt/user_config.h | 66 +
> fs/ksmbd/mgmt/user_session.c | 369 +
> fs/ksmbd/mgmt/user_session.h | 106 +
> fs/ksmbd/misc.c | 338 +
> fs/ksmbd/misc.h | 35 +
> fs/ksmbd/ndr.c | 340 +
> fs/ksmbd/ndr.h | 22 +
> fs/ksmbd/nterr.h | 543 ++
> fs/ksmbd/ntlmssp.h | 169 +
> fs/ksmbd/oplock.c | 1709 +++++
> fs/ksmbd/oplock.h | 131 +
> fs/ksmbd/server.c | 633 ++
> fs/ksmbd/server.h | 70 +
> fs/ksmbd/smb2misc.c | 438 ++
> fs/ksmbd/smb2ops.c | 312 +
> fs/ksmbd/smb2pdu.c | 8364 ++++++++++++++++++++++
> fs/ksmbd/smb2pdu.h | 1698 +++++
> fs/ksmbd/smb_common.c | 655 ++
> fs/ksmbd/smb_common.h | 543 ++
> fs/ksmbd/smbacl.c | 1344 ++++
> fs/ksmbd/smbacl.h | 212 +
> fs/ksmbd/smbfsctl.h | 91 +
> fs/ksmbd/smbstatus.h | 1822 +++++
> fs/ksmbd/transport_ipc.c | 874 +++
> fs/ksmbd/transport_ipc.h | 47 +
> fs/ksmbd/transport_rdma.c | 2057 ++++++
> fs/ksmbd/transport_rdma.h | 63 +
> fs/ksmbd/transport_tcp.c | 618 ++
> fs/ksmbd/transport_tcp.h | 13 +
> fs/ksmbd/unicode.c | 384 +
> fs/ksmbd/unicode.h | 357 +
> fs/ksmbd/uniupr.h | 268 +
> fs/ksmbd/vfs.c | 1886 +++++
> fs/ksmbd/vfs.h | 197 +
> fs/ksmbd/vfs_cache.c | 725 ++
> fs/ksmbd/vfs_cache.h | 178 +
> fs/ksmbd/xattr.h | 122 +
> 66 files changed, 32187 insertions(+), 1 deletion(-) create mode 100644
> Documentation/filesystems/cifs/index.rst
> create mode 100644 Documentation/filesystems/cifs/ksmbd.rst
> create mode 100644 fs/ksmbd/Kconfig
> create mode 100644 fs/ksmbd/Makefile
> create mode 100644 fs/ksmbd/asn1.c
> create mode 100644 fs/ksmbd/asn1.h
> create mode 100644 fs/ksmbd/auth.c
> create mode 100644 fs/ksmbd/auth.h
> create mode 100644 fs/ksmbd/connection.c create mode 100644 fs/ksmbd/connection.h create mode 100644
> fs/ksmbd/crypto_ctx.c create mode 100644 fs/ksmbd/crypto_ctx.h create mode 100644 fs/ksmbd/glob.h
> create mode 100644 fs/ksmbd/ksmbd_netlink.h create mode 100644
> fs/ksmbd/ksmbd_spnego_negtokeninit.asn1
> create mode 100644 fs/ksmbd/ksmbd_spnego_negtokentarg.asn1
> create mode 100644 fs/ksmbd/ksmbd_work.c create mode 100644 fs/ksmbd/ksmbd_work.h create mode 100644
> fs/ksmbd/mgmt/ksmbd_ida.c create mode 100644 fs/ksmbd/mgmt/ksmbd_ida.h create mode 100644
> fs/ksmbd/mgmt/share_config.c create mode 100644 fs/ksmbd/mgmt/share_config.h create mode 100644
> fs/ksmbd/mgmt/tree_connect.c create mode 100644 fs/ksmbd/mgmt/tree_connect.h create mode 100644
> fs/ksmbd/mgmt/user_config.c create mode 100644 fs/ksmbd/mgmt/user_config.h create mode 100644
> fs/ksmbd/mgmt/user_session.c create mode 100644 fs/ksmbd/mgmt/user_session.h create mode 100644
> fs/ksmbd/misc.c create mode 100644 fs/ksmbd/misc.h create mode 100644 fs/ksmbd/ndr.c create mode
> 100644 fs/ksmbd/ndr.h create mode 100644 fs/ksmbd/nterr.h create mode 100644 fs/ksmbd/ntlmssp.h
> create mode 100644 fs/ksmbd/oplock.c create mode 100644 fs/ksmbd/oplock.h create mode 100644
> fs/ksmbd/server.c create mode 100644 fs/ksmbd/server.h create mode 100644 fs/ksmbd/smb2misc.c create
> mode 100644 fs/ksmbd/smb2ops.c create mode 100644 fs/ksmbd/smb2pdu.c create mode 100644
> fs/ksmbd/smb2pdu.h create mode 100644 fs/ksmbd/smb_common.c create mode 100644 fs/ksmbd/smb_common.h
> create mode 100644 fs/ksmbd/smbacl.c create mode 100644 fs/ksmbd/smbacl.h create mode 100644
> fs/ksmbd/smbfsctl.h create mode 100644 fs/ksmbd/smbstatus.h create mode 100644
> fs/ksmbd/transport_ipc.c create mode 100644 fs/ksmbd/transport_ipc.h create mode 100644
> fs/ksmbd/transport_rdma.c create mode 100644 fs/ksmbd/transport_rdma.h create mode 100644
> fs/ksmbd/transport_tcp.c create mode 100644 fs/ksmbd/transport_tcp.h create mode 100644
> fs/ksmbd/unicode.c create mode 100644 fs/ksmbd/unicode.h create mode 100644 fs/ksmbd/uniupr.h create
> mode 100644 fs/ksmbd/vfs.c create mode 100644 fs/ksmbd/vfs.h create mode 100644 fs/ksmbd/vfs_cache.c
> create mode 100644 fs/ksmbd/vfs_cache.h create mode 100644 fs/ksmbd/xattr.h
>
> --
> 2.17.1