linux/fs/cifs
Steve French e3e9463414 smb3: improve SMB3 change notification support
Change notification is a commonly supported feature by most servers,
but the current ioctl to request notification when a directory is
changed does not return the information about what changed
(even though it is returned by the server in the SMB3 change
notify response), it simply returns when there is a change.

This ioctl improves upon CIFS_IOC_NOTIFY by returning the notify
information structure which includes the name of the file(s) that
changed and why. See MS-SMB2 2.2.35 for details on the individual
filter flags and the file_notify_information structure returned.

To use this simply pass in the following (with enough space
to fit at least one file_notify_information structure)

struct __attribute__((__packed__)) smb3_notify {
       uint32_t completion_filter;
       bool     watch_tree;
       uint32_t data_len;
       uint8_t  data[];
} __packed;

using CIFS_IOC_NOTIFY_INFO 0xc009cf0b
 or equivalently _IOWR(CIFS_IOCTL_MAGIC, 11, struct smb3_notify_info)

The ioctl will block until the server detects a change to that
directory or its subdirectories (if watch_tree is set).

Acked-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Acked-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2022-10-15 10:05:53 -05:00
..
asn1.c
cached_dir.c cifs: find and use the dentry for cached non-root directories also 2022-10-13 09:36:39 -05:00
cached_dir.h cifs: enable caching of directories for which a lease is held 2022-10-13 09:36:39 -05:00
cifs_debug.c smb3: add dynamic trace points for tree disconnect 2022-10-05 01:31:18 -05:00
cifs_debug.h smb3: add dynamic trace points for tree disconnect 2022-10-05 01:31:18 -05:00
cifs_dfs_ref.c
cifs_fs_sb.h
cifs_ioctl.h smb3: improve SMB3 change notification support 2022-10-15 10:05:53 -05:00
cifs_spnego_negtokeninit.asn1
cifs_spnego.c
cifs_spnego.h
cifs_swn.c smb3: add dynamic trace points for tree disconnect 2022-10-05 01:31:18 -05:00
cifs_swn.h
cifs_unicode.c
cifs_unicode.h
cifs_uniupr.h
cifsacl.c
cifsacl.h
cifsencrypt.c cifs: secmech: use shash_desc directly, remove sdesc 2022-10-07 23:08:39 -05:00
cifsfs.c cifs: improve symlink handling for smb2+ 2022-10-13 09:36:04 -05:00
cifsfs.h cifs: update internal module number 2022-09-14 04:00:06 -05:00
cifsglob.h smb3: improve SMB3 change notification support 2022-10-15 10:05:53 -05:00
cifspdu.h cifs: Replace a couple of one-element arrays with flexible-array members 2022-10-05 17:42:38 -05:00
cifsproto.h cifs: improve symlink handling for smb2+ 2022-10-13 09:36:04 -05:00
cifsroot.c cifs: move from strlcpy with unused retval to strscpy 2022-08-19 11:02:26 -05:00
cifssmb.c cifs: use ALIGN() and round_up() macros 2022-10-13 09:36:39 -05:00
connect.c cifs: use ALIGN() and round_up() macros 2022-10-13 09:36:39 -05:00
dfs_cache.c smb3: add dynamic trace points for tree disconnect 2022-10-05 01:31:18 -05:00
dfs_cache.h
dir.c cifs: lease key is uninitialized in smb1 paths 2022-10-15 10:05:53 -05:00
dns_resolve.c
dns_resolve.h
export.c
file.c cifs: lease key is uninitialized in two additional functions when smb1 2022-10-15 10:05:53 -05:00
fs_context.c cifs: replace kfree() with kfree_sensitive() for sensitive data 2022-10-07 23:06:48 -05:00
fs_context.h smb3: allow deferred close timeout to be configurable 2022-08-11 20:03:04 -05:00
fscache.c smb3: add dynamic trace points for tree disconnect 2022-10-05 01:31:18 -05:00
fscache.h
inode.c cifs: enable caching of directories for which a lease is held 2022-10-13 09:36:39 -05:00
ioctl.c smb3: improve SMB3 change notification support 2022-10-15 10:05:53 -05:00
Kconfig
link.c cifs: improve symlink handling for smb2+ 2022-10-13 09:36:04 -05:00
Makefile
misc.c cifs: secmech: use shash_desc directly, remove sdesc 2022-10-07 23:08:39 -05:00
netlink.c genetlink: start to validate reserved header bytes 2022-08-29 12:47:15 +01:00
netlink.h
netmisc.c cifs: remove unused server parameter from calc_smb_size() 2022-08-17 18:07:13 -05:00
nterr.c
nterr.h
ntlmssp.h
readdir.c cifs: improve symlink handling for smb2+ 2022-10-13 09:36:04 -05:00
rfc1002pdu.h
sess.c cifs: fix double-fault crash during ntlmssp 2022-10-15 10:04:38 -05:00
smb1ops.c cifs: improve symlink handling for smb2+ 2022-10-13 09:36:04 -05:00
smb2file.c cifs: fix static checker warning 2022-10-14 12:35:25 -05:00
smb2glob.h
smb2inode.c cifs: fix uninitialised var in smb2_compound_op() 2022-10-13 09:36:38 -05:00
smb2maperror.c
smb2misc.c cifs: use ALIGN() and round_up() macros 2022-10-13 09:36:39 -05:00
smb2ops.c smb3: improve SMB3 change notification support 2022-10-15 10:05:53 -05:00
smb2pdu.c smb3: improve SMB3 change notification support 2022-10-15 10:05:53 -05:00
smb2pdu.h cifs: improve symlink handling for smb2+ 2022-10-13 09:36:04 -05:00
smb2proto.h smb3: improve SMB3 change notification support 2022-10-15 10:05:53 -05:00
smb2status.h
smb2transport.c smb3: fix oops in calculating shash_setkey 2022-10-07 23:08:41 -05:00
smbdirect.c Fix formatting of client smbdirect RDMA logging 2022-10-05 01:31:04 -05:00
smbdirect.h Decrease the number of SMB3 smbdirect client SGEs 2022-10-05 01:29:21 -05:00
smbencrypt.c
smberr.h
trace.c
trace.h smb3: add dynamic trace points for tree disconnect 2022-10-05 01:31:18 -05:00
transport.c Scheduler changes for v6.1: 2022-10-10 09:10:28 -07:00
unc.c
winucase.c
xattr.c