xref: /OK3568_Linux_fs/kernel/Documentation/admin-guide/cifs/todo.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun====
2*4882a593SmuzhiyunTODO
3*4882a593Smuzhiyun====
4*4882a593Smuzhiyun
5*4882a593SmuzhiyunVersion 2.14 December 21, 2018
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunA Partial List of Missing Features
8*4882a593Smuzhiyun==================================
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunContributions are welcome.  There are plenty of opportunities
11*4882a593Smuzhiyunfor visible, important contributions to this module.  Here
12*4882a593Smuzhiyunis a partial list of the known problems and missing features:
13*4882a593Smuzhiyun
14*4882a593Smuzhiyuna) SMB3 (and SMB3.1.1) missing optional features:
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun   - multichannel (started), integration with RDMA
17*4882a593Smuzhiyun   - directory leases (improved metadata caching), started (root dir only)
18*4882a593Smuzhiyun   - T10 copy offload ie "ODX" (copy chunk, and "Duplicate Extents" ioctl
19*4882a593Smuzhiyun     currently the only two server side copy mechanisms supported)
20*4882a593Smuzhiyun
21*4882a593Smuzhiyunb) improved sparse file support (fiemap and SEEK_HOLE are implemented
22*4882a593Smuzhiyun   but additional features would be supportable by the protocol).
23*4882a593Smuzhiyun
24*4882a593Smuzhiyunc) Directory entry caching relies on a 1 second timer, rather than
25*4882a593Smuzhiyun   using Directory Leases, currently only the root file handle is cached longer
26*4882a593Smuzhiyun
27*4882a593Smuzhiyund) quota support (needs minor kernel change since quota calls
28*4882a593Smuzhiyun   to make it to network filesystems or deviceless filesystems)
29*4882a593Smuzhiyun
30*4882a593Smuzhiyune) Additional use cases can be optimized to use "compounding" (e.g.
31*4882a593Smuzhiyun   open/query/close and open/setinfo/close) to reduce the number of
32*4882a593Smuzhiyun   roundtrips to the server and improve performance. Various cases
33*4882a593Smuzhiyun   (stat, statfs, create, unlink, mkdir) already have been improved by
34*4882a593Smuzhiyun   using compounding but more can be done. In addition we could
35*4882a593Smuzhiyun   significantly reduce redundant opens by using deferred close (with
36*4882a593Smuzhiyun   handle caching leases) and better using reference counters on file
37*4882a593Smuzhiyun   handles.
38*4882a593Smuzhiyun
39*4882a593Smuzhiyunf) Finish inotify support so kde and gnome file list windows
40*4882a593Smuzhiyun   will autorefresh (partially complete by Asser). Needs minor kernel
41*4882a593Smuzhiyun   vfs change to support removing D_NOTIFY on a file.
42*4882a593Smuzhiyun
43*4882a593Smuzhiyung) Add GUI tool to configure /proc/fs/cifs settings and for display of
44*4882a593Smuzhiyun   the CIFS statistics (started)
45*4882a593Smuzhiyun
46*4882a593Smuzhiyunh) implement support for security and trusted categories of xattrs
47*4882a593Smuzhiyun   (requires minor protocol extension) to enable better support for SELINUX
48*4882a593Smuzhiyun
49*4882a593Smuzhiyuni) Add support for tree connect contexts (see MS-SMB2) a new SMB3.1.1 protocol
50*4882a593Smuzhiyun   feature (may be especially useful for virtualization).
51*4882a593Smuzhiyun
52*4882a593Smuzhiyunj) Create UID mapping facility so server UIDs can be mapped on a per
53*4882a593Smuzhiyun   mount or a per server basis to client UIDs or nobody if no mapping
54*4882a593Smuzhiyun   exists. Also better integration with winbind for resolving SID owners
55*4882a593Smuzhiyun
56*4882a593Smuzhiyunk) Add tools to take advantage of more smb3 specific ioctls and features
57*4882a593Smuzhiyun   (passthrough ioctl/fsctl is now implemented in cifs.ko to allow
58*4882a593Smuzhiyun   sending various SMB3 fsctls and query info and set info calls
59*4882a593Smuzhiyun   directly from user space) Add tools to make setting various non-POSIX
60*4882a593Smuzhiyun   metadata attributes easier from tools (e.g. extending what was done
61*4882a593Smuzhiyun   in smb-info tool).
62*4882a593Smuzhiyun
63*4882a593Smuzhiyunl) encrypted file support
64*4882a593Smuzhiyun
65*4882a593Smuzhiyunm) improved stats gathering tools (perhaps integration with nfsometer?)
66*4882a593Smuzhiyun   to extend and make easier to use what is currently in /proc/fs/cifs/Stats
67*4882a593Smuzhiyun
68*4882a593Smuzhiyunn) Add support for claims based ACLs ("DAC")
69*4882a593Smuzhiyun
70*4882a593Smuzhiyuno) mount helper GUI (to simplify the various configuration options on mount)
71*4882a593Smuzhiyun
72*4882a593Smuzhiyunp) Add support for witness protocol (perhaps ioctl to cifs.ko from user space
73*4882a593Smuzhiyun   tool listening on witness protocol RPC) to allow for notification of share
74*4882a593Smuzhiyun   move, server failover, and server adapter changes.  And also improve other
75*4882a593Smuzhiyun   failover scenarios, e.g. when client knows multiple DFS entries point to
76*4882a593Smuzhiyun   different servers, and the server we are connected to has gone down.
77*4882a593Smuzhiyun
78*4882a593Smuzhiyunq) Allow mount.cifs to be more verbose in reporting errors with dialect
79*4882a593Smuzhiyun   or unsupported feature errors.
80*4882a593Smuzhiyun
81*4882a593Smuzhiyunr) updating cifs documentation, and user guide.
82*4882a593Smuzhiyun
83*4882a593Smuzhiyuns) Addressing bugs found by running a broader set of xfstests in standard
84*4882a593Smuzhiyun   file system xfstest suite.
85*4882a593Smuzhiyun
86*4882a593Smuzhiyunt) split cifs and smb3 support into separate modules so legacy (and less
87*4882a593Smuzhiyun   secure) CIFS dialect can be disabled in environments that don't need it
88*4882a593Smuzhiyun   and simplify the code.
89*4882a593Smuzhiyun
90*4882a593Smuzhiyunv) POSIX Extensions for SMB3.1.1 (started, create and mkdir support added
91*4882a593Smuzhiyun   so far).
92*4882a593Smuzhiyun
93*4882a593Smuzhiyunw) Add support for additional strong encryption types, and additional spnego
94*4882a593Smuzhiyun   authentication mechanisms (see MS-SMB2)
95*4882a593Smuzhiyun
96*4882a593Smuzhiyunx) Finish support for SMB3.1.1 compression
97*4882a593Smuzhiyun
98*4882a593SmuzhiyunKnown Bugs
99*4882a593Smuzhiyun==========
100*4882a593Smuzhiyun
101*4882a593SmuzhiyunSee https://bugzilla.samba.org - search on product "CifsVFS" for
102*4882a593Smuzhiyuncurrent bug list.  Also check http://bugzilla.kernel.org (Product = File System, Component = CIFS)
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun1) existing symbolic links (Windows reparse points) are recognized but
105*4882a593Smuzhiyun   can not be created remotely. They are implemented for Samba and those that
106*4882a593Smuzhiyun   support the CIFS Unix extensions, although earlier versions of Samba
107*4882a593Smuzhiyun   overly restrict the pathnames.
108*4882a593Smuzhiyun2) follow_link and readdir code does not follow dfs junctions
109*4882a593Smuzhiyun   but recognizes them
110*4882a593Smuzhiyun
111*4882a593SmuzhiyunMisc testing to do
112*4882a593Smuzhiyun==================
113*4882a593Smuzhiyun1) check out max path names and max path name components against various server
114*4882a593Smuzhiyun   types. Try nested symlinks (8 deep). Return max path name in stat -f information
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun2) Improve xfstest's cifs/smb3 enablement and adapt xfstests where needed to test
117*4882a593Smuzhiyun   cifs/smb3 better
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun3) Additional performance testing and optimization using iozone and similar -
120*4882a593Smuzhiyun   there are some easy changes that can be done to parallelize sequential writes,
121*4882a593Smuzhiyun   and when signing is disabled to request larger read sizes (larger than
122*4882a593Smuzhiyun   negotiated size) and send larger write sizes to modern servers.
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun4) More exhaustively test against less common servers
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun5) Continue to extend the smb3 "buildbot" which does automated xfstesting
127*4882a593Smuzhiyun   against Windows, Samba and Azure currently - to add additional tests and
128*4882a593Smuzhiyun   to allow the buildbot to execute the tests faster. The URL for the
129*4882a593Smuzhiyun   buildbot is: http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun6) Address various coverity warnings (most are not bugs per-se, but
132*4882a593Smuzhiyun   the more warnings are addressed, the easier it is to spot real
133*4882a593Smuzhiyun   problems that static analyzers will point out in the future).
134