Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d6d3f5bc authored by Steve French's avatar Steve French
Browse files

Merge with /pub/scm/linux/kernel/git/sfrench/cifs-2.6.git/

parents ac9b9c66 23e7dd7d
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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
-------------------------------------
+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
------------
@@ -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.

@@ -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 
@@ -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
@@ -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
@@ -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
@@ -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
------------
@@ -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 
+20 −4
Original line number Diff line number Diff line
@@ -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
@@ -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)
		
@@ -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

+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
==================================
@@ -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)

@@ -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.
@@ -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
@@ -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
+2 −1
Original line number Diff line number Diff line
@@ -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