Loading fs/cifs/AUTHORS +4 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,10 @@ Domen Puncer Jesper Juhl (in particular for lots of whitespace/formatting cleanup) Vince Negri and Dave Stahl (for finding an important caching bug) Adrian Bunk (kcalloc cleanups) Miklos Szeredi Kazeon team for various fixes especially for 2.4 version. Asser Ferno (Change Notify support) Shaggy (Dave Kleikamp) for inumerable small fs suggestions and some good cleanup Test case and Bug Report contributors ------------------------------------- Loading fs/cifs/CHANGES +52 −8 Original line number Diff line number Diff line Version 1.39 ------------ Defer close of a file handle slightly if pending writes depend on that file handle (this reduces the EBADF bad file handle errors that can be logged under heavy stress on writes). Version 1.38 ------------ Fix tcp socket retransmission timeouts (e.g. on ENOSPACE from the socket) to be smaller at first (but increasing) so large write performance performance over GigE is better. Do not hang thread on illegal byte range lock response from Windows (Windows can send an RFC1001 size which does not match smb size) by allowing an SMBs TCP length to be up to a few bytes longer than it should be. wsize and rsize can now be larger than negotiated buffer size if server supports large readx/writex, even when directio mount flag not specified. Write size will in many cases now be 16K instead of 4K which greatly helps file copy performance on lightly loaded networks. Fix oops in dnotify when experimental config flag enabled. Make cifsFYI more granular. Version 1.37 ------------ Fix readdir caching when unlink removes file in current search buffer, and this is followed by a rewind search to just before the deleted entry. Do not attempt to set ctime unless atime and/or mtime change requested (most servers throw it away anyway). Fix length check of received smbs to be more accurate. Fix big endian problem with mapchars mount option, and with a field returned by statfs. Version 1.36 ------------ Add support for mounting to older pre-CIFS servers such as Windows9x and ME. For these older servers, add option for passing netbios name of server in on mount (servernetbiosname). Add suspend support for power management, to avoid cifsd thread preventing software suspend from working. Add mount option for disabling the default behavior of sending byte range lock requests to the server (necessary for certain applications which break with mandatory lock behavior such as Evolution), and also mount option for requesting case insensitive matching for path based requests (requesting case sensitive is the default). Version 1.35 ------------ Add writepage performance improvements. Fix path name conversions for long filenames on mounts which were done with "mapchars" mount option specified. specified. Ensure multiplex ids do not collide. Fix case in which rmmod can oops if done soon after last unmount. Fix truncated search (readdir) output when resume filename was a long filename. Fix filename conversion when mapchars mount option was specified and filename was a long filename. Version 1.34 ------------ Loading @@ -11,7 +55,7 @@ Do not oops if root user kills cifs oplock kernel thread or kills the cifsd thread (NB: killing the cifs kernel threads is not recommended, unmount and rmmod cifs will kill them when they are no longer needed). Fix readdir to ASCII servers (ie older servers which do not support Unicode) and also require asterik. which do not support Unicode) and also require asterisk. Fix out of memory case in which data could be written one page off in the page cache. Loading Loading @@ -101,7 +145,7 @@ improperly zeroed buffer in CIFS Unix extensions set times call. Version 1.25 ------------ Fix internationlization problem in cifs readdir with filenames that map to Fix internationalization problem in cifs readdir with filenames that map to longer UTF8 strings than the string on the wire was in Unicode. Add workaround for readdir to netapp servers. Fix search rewind (seek into readdir to return non-consecutive entries). Do not do readdir when server negotiates Loading Loading @@ -276,7 +320,7 @@ Fix caching problem when files opened by multiple clients in which page cache could contain stale data, and write through did not occur often enough while file was still open when read ahead (read oplock) not allowed. Treat "sep=" when first mount option as an overrride of comma as the default separator between mount as an override of comma as the default separator between mount options. Version 1.01 Loading @@ -286,7 +330,7 @@ Allow passwords longer than 16 bytes. Allow null password string. Version 1.00 ------------ Gracefully clean up failed mounts when attempting to mount to servers such as Windows 98 that terminate tcp sessions during prototocol negotiation. Handle Windows 98 that terminate tcp sessions during protocol negotiation. Handle embedded commas in mount parsing of passwords. Version 0.99 Loading @@ -295,7 +339,7 @@ Invalidate local inode cached pages on oplock break and when last file instance is closed so that the client does not continue using stale local copy rather than later modified server copy of file. Do not reconnect when server drops the tcp session prematurely before negotiate protocol response. Fix oops in roepen_file when dentry freed. Allow protocol response. Fix oops in reopen_file when dentry freed. Allow the support for CIFS Unix Extensions to be disabled via proc interface. Version 0.98 Loading Loading @@ -637,7 +681,7 @@ versions of 2.4 kernel (now builds and works again on kernels at least as early Version 0.41 ------------ Various minor fixes for Connectathon Posix "basic" file i/o test suite. Directory caching fixed so hardlinked files now return the correct rumber of links on fstat as they are repeatedly linked and unlinked. files now return the correct number of links on fstat as they are repeatedly linked and unlinked. Version 0.40 ------------ Loading Loading @@ -704,7 +748,7 @@ session) and cleaned them up and made them more consistent with other cifs functions. 7) Server support for Unix extensions is now fully detected and FindFirst is implemented both ways (with or without Unix exentions) but FindNext and QueryPathInfo with the Unix extensions are not completed, (with or without Unix extensions) but FindNext and QueryPathInfo with the Unix extensions are not completed, nor is the symlink support using the Unix extensions 8) Started adding the readlink and follow_link code Loading fs/cifs/README +20 −4 Original line number Diff line number Diff line Loading @@ -294,8 +294,10 @@ A partial list of the supported mount options follows: during the local client kernel build will be used. If server does not support Unicode, this parameter is unused. rsize default read size wsize default write size rsize default read size (usually 16K) wsize default write size (usually 16K, 32K is often better over GigE) maximum wsize currently allowed by CIFS is 57344 (14 4096 byte pages) rw mount the network share read-write (note that the server may still consider the share read-only) ro mount network share read-only Loading Loading @@ -407,6 +409,13 @@ A partial list of the supported mount options follows: This has no effect if the server does not support Unicode on the wire. nomapchars Do not translate any of these seven characters (default). nocase Request case insensitive path name matching (case sensitive is the default if the server suports it). nobrl Do not send byte range lock requests to the server. This is necessary for certain applications that break with cifs style mandatory byte range locks (and most cifs servers do not yet support requesting advisory byte range locks). remount remount the share (often used to change from ro to rw mounts or vice versa) Loading Loading @@ -473,9 +482,16 @@ These experimental features and tracing can be enabled by changing flags in kernel, e.g. insmod cifs). To enable a feature set it to 1 e.g. to enable tracing to the kernel message log type: echo 1 > /proc/fs/cifs/cifsFYI echo 7 > /proc/fs/cifs/cifsFYI and for more extensive tracing including the start of smb requests and responses cifsFYI functions as a bit mask. Setting it to 1 enables additional kernel logging of various informational messages. 2 enables logging of non-zero SMB return codes while 4 enables logging of requests that take longer than one second to complete (except for byte range lock requests). Setting it to 4 requires defining CONFIG_CIFS_STATS2 manually in the source code (typically by setting it in the beginning of cifsglob.h), and setting it to seven enables all three. Finally, tracing the start of smb requests and responses can be enabled via: echo 1 > /proc/fs/cifs/traceSMB Loading fs/cifs/TODO +32 −18 Original line number Diff line number Diff line version 1.34 April 29, 2005 version 1.37 October 9, 2005 A Partial List of Missing Features ================================== Loading @@ -7,14 +7,14 @@ Contributions are welcome. There are plenty of opportunities for visible, important contributions to this module. Here is a partial list of the known problems and missing features: a) Support for SecurityDescriptors for chmod/chgrp/chown so these can be supported for Windows servers a) Support for SecurityDescriptors(Windows/CIFS ACLs) for chmod/chgrp/chown so that these operations can be supported to Windows servers b) Better pam/winbind integration (e.g. to handle uid mapping better) b) Mapping POSIX ACLs (and eventually NFSv4 ACLs) to CIFS SecurityDescriptors c) multi-user mounts - multiplexed sessionsetups over single vc (ie tcp session) - more testing needed c) Better pam/winbind integration (e.g. to handle uid mapping better) d) Kerberos/SPNEGO session setup support - (started) Loading @@ -29,12 +29,17 @@ f) Directory entry caching relies on a 1 second timer, rather than using FindNotify or equivalent. - (started) g) A few byte range testcases fail due to POSIX vs. Windows/CIFS style byte range lock differences style byte range lock differences. Save byte range locks so reconnect can replay them. h) quota support h) Support unlock all (unlock 0,MAX_OFFSET) by unlocking all known byte range locks that we locked on the file. j) finish writepages support (multi-page write behind for improved performance) and syncpage i) quota support (needs minor kernel change since quota calls to make it to network filesystems or deviceless filesystems) j) investigate sync behavior (including syncpage) and check for proper behavior of intr/nointr k) hook lower into the sockets api (as NFS/SunRPC does) to avoid the extra copy in/out of the socket buffers in some cases. Loading @@ -57,20 +62,18 @@ p) Add support for storing symlink and fifo info to Windows servers in the Extended Attribute format their SFU clients would recognize. q) Finish fcntl D_NOTIFY support so kde and gnome file list windows will autorefresh (started) will autorefresh (partially complete by Asser). Needs minor kernel vfs change to support removing D_NOTIFY on a file. r) Add GUI tool to configure /proc/fs/cifs settings and for display of the CIFS statistics (started) q) implement support for security and trusted categories of xattrs s) implement support for security and trusted categories of xattrs (requires minor protocol extension) to enable better support for SELINUX r) Implement O_DIRECT flag on open (already supported on mount) s) Allow remapping of last remaining character (\) to +0xF000 which (this character is valid for POSIX but not for Windows) t) Implement O_DIRECT flag on open (already supported on mount) t) Create UID mapping facility so server UIDs can be mapped on a per u) Create UID mapping facility so server UIDs can be mapped on a per mount or a per server basis to client UIDs or nobody if no mapping exists. This is helpful when Unix extensions are negotiated to allow better permission checking when UIDs differ on the server Loading @@ -78,6 +81,17 @@ and client. Add new protocol request to the CIFS protocol standard for asking the server for the corresponding name of a particular uid. v) Add support for CIFS Unix and also the newer POSIX extensions to the server side for Samba 4. w) Finish up the dos time conversion routines needed to return old server time to the client (default time, of now or time 0 is used now for these very old servers) x) Add support for OS/2 (LANMAN 1.2 and LANMAN2.1 based SMB servers) y) Finish testing of Windows 9x/Windows ME server support (started). KNOWN BUGS (updated April 29, 2005) ==================================== See http://bugzilla.samba.org - search on product "CifsVFS" for Loading fs/cifs/asn1.c +2 −1 Original line number Diff line number Diff line Loading @@ -191,7 +191,8 @@ asn1_header_decode(struct asn1_ctx *ctx, unsigned char **eoc, unsigned int *cls, unsigned int *con, unsigned int *tag) { unsigned int def, len; unsigned int def = 0; unsigned int len = 0; if (!asn1_id_decode(ctx, cls, con, tag)) return 0; Loading Loading
fs/cifs/AUTHORS +4 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,10 @@ Domen Puncer Jesper Juhl (in particular for lots of whitespace/formatting cleanup) Vince Negri and Dave Stahl (for finding an important caching bug) Adrian Bunk (kcalloc cleanups) Miklos Szeredi Kazeon team for various fixes especially for 2.4 version. Asser Ferno (Change Notify support) Shaggy (Dave Kleikamp) for inumerable small fs suggestions and some good cleanup Test case and Bug Report contributors ------------------------------------- Loading
fs/cifs/CHANGES +52 −8 Original line number Diff line number Diff line Version 1.39 ------------ Defer close of a file handle slightly if pending writes depend on that file handle (this reduces the EBADF bad file handle errors that can be logged under heavy stress on writes). Version 1.38 ------------ Fix tcp socket retransmission timeouts (e.g. on ENOSPACE from the socket) to be smaller at first (but increasing) so large write performance performance over GigE is better. Do not hang thread on illegal byte range lock response from Windows (Windows can send an RFC1001 size which does not match smb size) by allowing an SMBs TCP length to be up to a few bytes longer than it should be. wsize and rsize can now be larger than negotiated buffer size if server supports large readx/writex, even when directio mount flag not specified. Write size will in many cases now be 16K instead of 4K which greatly helps file copy performance on lightly loaded networks. Fix oops in dnotify when experimental config flag enabled. Make cifsFYI more granular. Version 1.37 ------------ Fix readdir caching when unlink removes file in current search buffer, and this is followed by a rewind search to just before the deleted entry. Do not attempt to set ctime unless atime and/or mtime change requested (most servers throw it away anyway). Fix length check of received smbs to be more accurate. Fix big endian problem with mapchars mount option, and with a field returned by statfs. Version 1.36 ------------ Add support for mounting to older pre-CIFS servers such as Windows9x and ME. For these older servers, add option for passing netbios name of server in on mount (servernetbiosname). Add suspend support for power management, to avoid cifsd thread preventing software suspend from working. Add mount option for disabling the default behavior of sending byte range lock requests to the server (necessary for certain applications which break with mandatory lock behavior such as Evolution), and also mount option for requesting case insensitive matching for path based requests (requesting case sensitive is the default). Version 1.35 ------------ Add writepage performance improvements. Fix path name conversions for long filenames on mounts which were done with "mapchars" mount option specified. specified. Ensure multiplex ids do not collide. Fix case in which rmmod can oops if done soon after last unmount. Fix truncated search (readdir) output when resume filename was a long filename. Fix filename conversion when mapchars mount option was specified and filename was a long filename. Version 1.34 ------------ Loading @@ -11,7 +55,7 @@ Do not oops if root user kills cifs oplock kernel thread or kills the cifsd thread (NB: killing the cifs kernel threads is not recommended, unmount and rmmod cifs will kill them when they are no longer needed). Fix readdir to ASCII servers (ie older servers which do not support Unicode) and also require asterik. which do not support Unicode) and also require asterisk. Fix out of memory case in which data could be written one page off in the page cache. Loading Loading @@ -101,7 +145,7 @@ improperly zeroed buffer in CIFS Unix extensions set times call. Version 1.25 ------------ Fix internationlization problem in cifs readdir with filenames that map to Fix internationalization problem in cifs readdir with filenames that map to longer UTF8 strings than the string on the wire was in Unicode. Add workaround for readdir to netapp servers. Fix search rewind (seek into readdir to return non-consecutive entries). Do not do readdir when server negotiates Loading Loading @@ -276,7 +320,7 @@ Fix caching problem when files opened by multiple clients in which page cache could contain stale data, and write through did not occur often enough while file was still open when read ahead (read oplock) not allowed. Treat "sep=" when first mount option as an overrride of comma as the default separator between mount as an override of comma as the default separator between mount options. Version 1.01 Loading @@ -286,7 +330,7 @@ Allow passwords longer than 16 bytes. Allow null password string. Version 1.00 ------------ Gracefully clean up failed mounts when attempting to mount to servers such as Windows 98 that terminate tcp sessions during prototocol negotiation. Handle Windows 98 that terminate tcp sessions during protocol negotiation. Handle embedded commas in mount parsing of passwords. Version 0.99 Loading @@ -295,7 +339,7 @@ Invalidate local inode cached pages on oplock break and when last file instance is closed so that the client does not continue using stale local copy rather than later modified server copy of file. Do not reconnect when server drops the tcp session prematurely before negotiate protocol response. Fix oops in roepen_file when dentry freed. Allow protocol response. Fix oops in reopen_file when dentry freed. Allow the support for CIFS Unix Extensions to be disabled via proc interface. Version 0.98 Loading Loading @@ -637,7 +681,7 @@ versions of 2.4 kernel (now builds and works again on kernels at least as early Version 0.41 ------------ Various minor fixes for Connectathon Posix "basic" file i/o test suite. Directory caching fixed so hardlinked files now return the correct rumber of links on fstat as they are repeatedly linked and unlinked. files now return the correct number of links on fstat as they are repeatedly linked and unlinked. Version 0.40 ------------ Loading Loading @@ -704,7 +748,7 @@ session) and cleaned them up and made them more consistent with other cifs functions. 7) Server support for Unix extensions is now fully detected and FindFirst is implemented both ways (with or without Unix exentions) but FindNext and QueryPathInfo with the Unix extensions are not completed, (with or without Unix extensions) but FindNext and QueryPathInfo with the Unix extensions are not completed, nor is the symlink support using the Unix extensions 8) Started adding the readlink and follow_link code Loading
fs/cifs/README +20 −4 Original line number Diff line number Diff line Loading @@ -294,8 +294,10 @@ A partial list of the supported mount options follows: during the local client kernel build will be used. If server does not support Unicode, this parameter is unused. rsize default read size wsize default write size rsize default read size (usually 16K) wsize default write size (usually 16K, 32K is often better over GigE) maximum wsize currently allowed by CIFS is 57344 (14 4096 byte pages) rw mount the network share read-write (note that the server may still consider the share read-only) ro mount network share read-only Loading Loading @@ -407,6 +409,13 @@ A partial list of the supported mount options follows: This has no effect if the server does not support Unicode on the wire. nomapchars Do not translate any of these seven characters (default). nocase Request case insensitive path name matching (case sensitive is the default if the server suports it). nobrl Do not send byte range lock requests to the server. This is necessary for certain applications that break with cifs style mandatory byte range locks (and most cifs servers do not yet support requesting advisory byte range locks). remount remount the share (often used to change from ro to rw mounts or vice versa) Loading Loading @@ -473,9 +482,16 @@ These experimental features and tracing can be enabled by changing flags in kernel, e.g. insmod cifs). To enable a feature set it to 1 e.g. to enable tracing to the kernel message log type: echo 1 > /proc/fs/cifs/cifsFYI echo 7 > /proc/fs/cifs/cifsFYI and for more extensive tracing including the start of smb requests and responses cifsFYI functions as a bit mask. Setting it to 1 enables additional kernel logging of various informational messages. 2 enables logging of non-zero SMB return codes while 4 enables logging of requests that take longer than one second to complete (except for byte range lock requests). Setting it to 4 requires defining CONFIG_CIFS_STATS2 manually in the source code (typically by setting it in the beginning of cifsglob.h), and setting it to seven enables all three. Finally, tracing the start of smb requests and responses can be enabled via: echo 1 > /proc/fs/cifs/traceSMB Loading
fs/cifs/TODO +32 −18 Original line number Diff line number Diff line version 1.34 April 29, 2005 version 1.37 October 9, 2005 A Partial List of Missing Features ================================== Loading @@ -7,14 +7,14 @@ Contributions are welcome. There are plenty of opportunities for visible, important contributions to this module. Here is a partial list of the known problems and missing features: a) Support for SecurityDescriptors for chmod/chgrp/chown so these can be supported for Windows servers a) Support for SecurityDescriptors(Windows/CIFS ACLs) for chmod/chgrp/chown so that these operations can be supported to Windows servers b) Better pam/winbind integration (e.g. to handle uid mapping better) b) Mapping POSIX ACLs (and eventually NFSv4 ACLs) to CIFS SecurityDescriptors c) multi-user mounts - multiplexed sessionsetups over single vc (ie tcp session) - more testing needed c) Better pam/winbind integration (e.g. to handle uid mapping better) d) Kerberos/SPNEGO session setup support - (started) Loading @@ -29,12 +29,17 @@ f) Directory entry caching relies on a 1 second timer, rather than using FindNotify or equivalent. - (started) g) A few byte range testcases fail due to POSIX vs. Windows/CIFS style byte range lock differences style byte range lock differences. Save byte range locks so reconnect can replay them. h) quota support h) Support unlock all (unlock 0,MAX_OFFSET) by unlocking all known byte range locks that we locked on the file. j) finish writepages support (multi-page write behind for improved performance) and syncpage i) quota support (needs minor kernel change since quota calls to make it to network filesystems or deviceless filesystems) j) investigate sync behavior (including syncpage) and check for proper behavior of intr/nointr k) hook lower into the sockets api (as NFS/SunRPC does) to avoid the extra copy in/out of the socket buffers in some cases. Loading @@ -57,20 +62,18 @@ p) Add support for storing symlink and fifo info to Windows servers in the Extended Attribute format their SFU clients would recognize. q) Finish fcntl D_NOTIFY support so kde and gnome file list windows will autorefresh (started) will autorefresh (partially complete by Asser). Needs minor kernel vfs change to support removing D_NOTIFY on a file. r) Add GUI tool to configure /proc/fs/cifs settings and for display of the CIFS statistics (started) q) implement support for security and trusted categories of xattrs s) implement support for security and trusted categories of xattrs (requires minor protocol extension) to enable better support for SELINUX r) Implement O_DIRECT flag on open (already supported on mount) s) Allow remapping of last remaining character (\) to +0xF000 which (this character is valid for POSIX but not for Windows) t) Implement O_DIRECT flag on open (already supported on mount) t) Create UID mapping facility so server UIDs can be mapped on a per u) Create UID mapping facility so server UIDs can be mapped on a per mount or a per server basis to client UIDs or nobody if no mapping exists. This is helpful when Unix extensions are negotiated to allow better permission checking when UIDs differ on the server Loading @@ -78,6 +81,17 @@ and client. Add new protocol request to the CIFS protocol standard for asking the server for the corresponding name of a particular uid. v) Add support for CIFS Unix and also the newer POSIX extensions to the server side for Samba 4. w) Finish up the dos time conversion routines needed to return old server time to the client (default time, of now or time 0 is used now for these very old servers) x) Add support for OS/2 (LANMAN 1.2 and LANMAN2.1 based SMB servers) y) Finish testing of Windows 9x/Windows ME server support (started). KNOWN BUGS (updated April 29, 2005) ==================================== See http://bugzilla.samba.org - search on product "CifsVFS" for Loading
fs/cifs/asn1.c +2 −1 Original line number Diff line number Diff line Loading @@ -191,7 +191,8 @@ asn1_header_decode(struct asn1_ctx *ctx, unsigned char **eoc, unsigned int *cls, unsigned int *con, unsigned int *tag) { unsigned int def, len; unsigned int def = 0; unsigned int len = 0; if (!asn1_id_decode(ctx, cls, con, tag)) return 0; Loading