Version 1.35
------------
Add writepage performance improvements.  Fix path name conversions
for long filenames on mounts which were done with "mapchars" mount option
specified.

Version 1.34
------------
Fix error mapping of the TOO_MANY_LINKS (hardlinks) case.
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.
Fix out of memory case in which data could be written one page
off in the page cache.

Version 1.33
------------
Fix caching problem, in which readdir of directory containing a file
which was cached could cause the file's time stamp to be updated
without invalidating the readahead data (so we could get stale
file data on the client for that file even as the server copy changed).
Cleanup response processing so cifsd can not loop when abnormally
terminated.


Version 1.32
------------
Fix oops in ls when Transact2 FindFirst (or FindNext) returns more than one
transact response for an SMB request and search entry split across two frames.
Add support for lsattr (getting ext2/ext3/reiserfs attr flags from the server)
as new protocol extensions. Do not send Get/Set calls for POSIX ACLs
unless server explicitly claims to support them in CIFS Unix extensions
POSIX ACL capability bit. Fix packet signing when multiuser mounting with
different users from the same client to the same server. Fix oops in
cifs_close. Add mount option for remapping reserved characters in
filenames (also allow recognizing files with created by SFU which have any
of these seven reserved characters, except backslash, to be recognized).
Fix invalid transact2 message (we were sometimes trying to interpret
oplock breaks as SMB responses). Add ioctl for checking that the
current uid matches the uid of the mounter (needed by umount.cifs).
Reduce the number of large buffer allocations in cifs response processing
(significantly reduces memory pressure under heavy stress with multiple
processes accessing the same server at the same time).

Version 1.31
------------
Fix updates of DOS attributes and time fields so that files on NT4 servers
do not get marked delete on close. Display sizes of cifs buffer pools in
cifs stats. Fix oops in unmount when cifsd thread being killed by 
shutdown. Add generic readv/writev and aio support. Report inode numbers 
consistently in readdir and lookup (when serverino mount option is
specified use the inode number that the server reports - for both lookup
and readdir, otherwise by default the locally generated inode number is used
for inodes created in either path since servers are not always able to 
provide unique inode numbers when exporting multiple volumes from under one
sharename).

Version 1.30
------------
Allow new nouser_xattr mount parm to disable xattr support for user namespace.
Do not flag user_xattr mount parm in dmesg.  Retry failures setting file time  
(mostly affects NT4 servers) by retry with handle based network operation. 
Add new POSIX Query FS Info for returning statfs info more accurately.
Handle passwords with multiple commas in them.

Version 1.29
------------
Fix default mode in sysfs of cifs module parms.  Remove old readdir routine.
Fix capabilities flags for large readx so as to allow reads larger than 64K.

Version 1.28
------------
Add module init parm for large SMB buffer size (to allow it to be changed
from its default of 16K) which is especially useful for large file copy
when mounting with the directio mount option. Fix oops after 
returning from mount when experimental ExtendedSecurity enabled and
SpnegoNegotiated returning invalid error. Fix case to retry better when 
peek returns from 1 to 3 bytes on socket which should have more data.
Fixed path based calls (such as cifs lookup) to handle path names
longer than 530 (now can handle PATH_MAX). Fix pass through authentication
from Samba server to DC (Samba required dummy LM password).

Version 1.27
------------
Turn off DNOTIFY (directory change notification support) by default
(unless built with the experimental flag) to fix hang with KDE
file browser. Fix DNOTIFY flag mappings.  Fix hang (in wait_event
waiting on an SMB response) in SendReceive when session dies but
reconnects quickly from another task.  Add module init  parms for
minimum number of large and small network buffers in the buffer pools,
and for the maximum number of simultaneous requests.

Version 1.26
------------
Add setfacl support to allow setting of ACLs remotely to Samba 3.10 and later
and other POSIX CIFS compliant servers.  Fix error mapping for getfacl 
to EOPNOTSUPP when server does not support posix acls on the wire. Fix 
improperly zeroed buffer in CIFS Unix extensions set times call. 

Version 1.25
------------
Fix internationlization 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 
buffer size to small to fit filename. Add support for reading POSIX ACLs from
the server (add also acl and noacl mount options).

Version 1.24
------------
Optionally allow using server side inode numbers, rather than client generated
ones by specifying mount option "serverino" - this is required for some apps
to work which double check hardlinked files and have persistent inode numbers.

Version 1.23
------------
Multiple bigendian fixes. On little endian systems (for reconnect after
network failure) fix tcp session reconnect code so we do not try first
to reconnect on reverse of port 445. Treat reparse points (NTFS junctions)
as directories rather than symlinks because we can do follow link on them.

Version 1.22
------------
Add config option to enable XATTR (extended attribute) support, mapping
xattr names in the "user." namespace space to SMB/CIFS EAs. Lots of
minor fixes pointed out by the Stanford SWAT checker (mostly missing
or out of order NULL pointer checks in little used error paths).

Version 1.21
------------
Add new mount parm to control whether mode check (generic_permission) is done
on the client.  If Unix extensions are enabled and the uids on the client
and server do not match, client permission checks are meaningless on
server uids that do not exist on the client (this does not affect the
normal ACL check which occurs on the server).  Fix default uid
on mknod to match create and mkdir. Add optional mount parm to allow
override of the default uid behavior (in which the server sets the uid
and gid of newly created files). Normally for network filesystem mounts
user want the server to set the uid/gid on newly created files (rather than 
using uid of the client processes you would in a local filesystem).

Version 1.20
------------
Make transaction counts more consistent. Merge /proc/fs/cifs/SimultaneousOps
info into /proc/fs/cifs/DebugData.  Fix oops in rare oops in readdir 
(in build_wildcard_path_from_dentry).  Fix mknod to pass type field
(block/char/fifo) properly.  Remove spurious mount warning log entry when
credentials passed as mount argument. Set major/minor device number in
inode for block and char devices when unix extensions enabled.

Version 1.19
------------
Fix /proc/fs/cifs/Stats and DebugData display to handle larger
amounts of return data. Properly limit requests to MAX_REQ (50
is the usual maximum active multiplex SMB/CIFS requests per server).
Do not kill cifsd (and thus hurt the other SMB session) when more than one
session to the same server (but with different userids) exists and one
of the two user's smb sessions is being removed while leaving the other.
Do not loop reconnecting in cifsd demultiplex thread when admin
kills the thread without going through unmount.

Version 1.18
------------
Do not rename hardlinked files (since that should be a noop). Flush
cached write behind data when reopening a file after session abend,
except when already in write. Grab per socket sem during reconnect 
to avoid oops in sendmsg if overlapping with reconnect. Do not
reset cached inode file size on readdir for files open for write on 
client.


Version 1.17
------------
Update number of blocks in file so du command is happier (in Linux a fake
blocksize of 512 is required for calculating number of blocks in inode).
Fix prepare write of partial pages to read in data from server if possible.
Fix race on tcpStatus field between unmount and reconnection code, causing
cifsd process sometimes to hang around forever. Improve out of memory
checks in cifs_filldir

Version 1.16
------------
Fix incorrect file size in file handle based setattr on big endian hardware.
Fix oops in build_path_from_dentry when out of memory.  Add checks for invalid
and closing file structs in writepage/partialpagewrite.  Add statistics
for each mounted share (new menuconfig option). Fix endianness problem in
volume information displayed in /proc/fs/cifs/DebugData (only affects
affects big endian architectures). Prevent renames while constructing
path names for open, mkdir and rmdir.

Version 1.15
------------
Change to mempools for alloc smb request buffers and multiplex structs
to better handle low memory problems (and potential deadlocks).

Version 1.14
------------
Fix incomplete listings of large directories on Samba servers when Unix
extensions enabled.  Fix oops when smb_buffer can not be allocated. Fix
rename deadlock when writing out dirty pages at same time.

Version 1.13
------------
Fix open of files in which O_CREATE can cause the mode to change in
some cases. Fix case in which retry of write overlaps file close.
Fix PPC64 build error.  Reduce excessive stack usage in smb password
hashing. Fix overwrite of Linux user's view of file mode to Windows servers.

Version 1.12
------------
Fixes for large file copy, signal handling, socket retry, buffer
allocation and low memory situations.

Version 1.11
------------
Better port 139 support to Windows servers (RFC1001/RFC1002 Session_Initialize)
also now allowing support for specifying client netbiosname.  NT4 support added.

Version 1.10
------------
Fix reconnection (and certain failed mounts) to properly wake up the
blocked users thread so it does not seem hung (in some cases was blocked
until the cifs receive timeout expired). Fix spurious error logging
to kernel log when application with open network files killed. 

Version 1.09
------------
Fix /proc/fs module unload warning message (that could be logged
to the kernel log). Fix intermittent failure in connectathon
test7 (hardlink count not immediately refreshed in case in which
inode metadata can be incorrectly kept cached when time near zero)

Version 1.08
------------
Allow file_mode and dir_mode (specified at mount time) to be enforced
locally (the server already enforced its own ACLs too) for servers
that do not report the correct mode (do not support the 
CIFS Unix Extensions).

Version 1.07
------------
Fix some small memory leaks in some unmount error paths. Fix major leak
of cache pages in readpages causing multiple read oriented stress
testcases (including fsx, and even large file copy) to fail over time. 

Version 1.06
------------
Send NTCreateX with ATTR_POSIX if Linux/Unix extensions negotiated with server.
This allows files that differ only in case and improves performance of file
creation and file open to such servers.  Fix semaphore conflict which causes 
slow delete of open file to Samba (which unfortunately can cause an oplock
break to self while vfs_unlink held i_sem) which can hang for 20 seconds.

Version 1.05
------------
fixes to cifs_readpages for fsx test case

Version 1.04
------------
Fix caching data integrity bug when extending file size especially when no
oplock on file.  Fix spurious logging of valid already parsed mount options
that are parsed outside of the cifs vfs such as nosuid.


Version 1.03
------------
Connect to server when port number override not specified, and tcp port
unitialized.  Reset search to restart at correct file when kernel routine
filldir returns error during large directory searches (readdir). 

Version 1.02
------------
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
options. 

Version 1.01
------------
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
embedded commas in mount parsing of passwords.

Version 0.99
------------
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
the support for CIFS Unix Extensions to be disabled via proc interface.

Version 0.98
------------
Fix hang in commit_write during reconnection of open files under heavy load.
Fix unload_nls oops in a mount failure path. Serialize writes to same socket
which also fixes any possible races when cifs signatures are enabled in SMBs
being sent out of signature sequence number order.    

Version 0.97
------------
Fix byte range locking bug (endian problem) causing bad offset and
length.

Version 0.96
------------
Fix oops (in send_sig) caused by CIFS unmount code trying to
wake up the demultiplex thread after it had exited. Do not log
error on harmless oplock release of closed handle.

Version 0.95
------------
Fix unsafe global variable usage and password hash failure on gcc 3.3.1
Fix problem reconnecting secondary mounts to same server after session 
failure.  Fix invalid dentry - race in mkdir when directory gets created
by another client between the lookup and mkdir.
 
Version 0.94
------------
Fix to list processing in reopen_files. Fix reconnection when server hung
but tcpip session still alive.  Set proper timeout on socket read.

Version 0.93
------------
Add missing mount options including iocharset.  SMP fixes in write and open. 
Fix errors in reconnecting after TCP session failure.  Fix module unloading
of default nls codepage

Version 0.92
------------
Active smb transactions should never go negative (fix double FreeXid). Fix
list processing in file routines. Check return code on kmalloc in open.
Fix spinlock usage for SMP.

Version 0.91
------------
Fix oops in reopen_files when invalid dentry. drop dentry on server rename 
and on revalidate errors. Fix cases where pid is now tgid.  Fix return code
on create hard link when server does not support them. 

Version 0.90
------------
Fix scheduling while atomic error in getting inode info on newly created file. 
Fix truncate of existing files opened with O_CREAT but not O_TRUNC set.

Version 0.89
------------
Fix oops on write to dead tcp session. Remove error log write for case when file open
O_CREAT but not O_EXCL

Version 0.88
------------
Fix non-POSIX behavior on rename of open file and delete of open file by taking 
advantage of trans2 SetFileInfo rename facility if available on target server.
Retry on ENOSPC and EAGAIN socket errors.

Version 0.87
------------
Fix oops on big endian readdir.  Set blksize to be even power of two (2**blkbits) to fix
allocation size miscalculation. After oplock token lost do not read through
cache. 

Version 0.86
------------
Fix oops on empty file readahead.  Fix for file size handling for locally cached files.

Version 0.85
------------
Fix oops in mkdir when server fails to return inode info. Fix oops in reopen_files
during auto reconnection to server after server recovered from failure.

Version 0.84
------------
Finish support for Linux 2.5 open/create changes, which removes the
redundant NTCreate/QPathInfo/close that was sent during file create.
Enable oplock by default. Enable packet signing by default (needed to 
access many recent Windows servers)

Version 0.83
------------
Fix oops when mounting to long server names caused by inverted parms to kmalloc.
Fix MultiuserMount (/proc/fs/cifs configuration setting) so that when enabled
we will choose a cifs user session (smb uid) that better matches the local
uid if a) the mount uid does not match the current uid and b) we have another
session to the same server (ip address) for a different mount which
matches the current local uid.

Version 0.82
------------
Add support for mknod of block or character devices.  Fix oplock
code (distributed caching) to properly send response to oplock
break from server.

Version 0.81
------------
Finish up CIFS packet digital signing for the default
NTLM security case. This should help Windows 2003
network interoperability since it is common for
packet signing to be required now. Fix statfs (stat -f)
which recently started returning errors due to 
invalid value (-1 instead of 0) being set in the
struct kstatfs f_ffiles field.

Version 0.80
-----------
Fix oops on stopping oplock thread when removing cifs when
built as module.

Version 0.79
------------
Fix mount options for ro (readonly), uid, gid and file and directory mode. 

Version 0.78
------------
Fix errors displayed on failed mounts to be more understandable.
Fixed various incorrect or misleading smb to posix error code mappings.

Version 0.77
------------
Fix display of NTFS DFS junctions to display as symlinks.
They are the network equivalent.  Fix oops in 
cifs_partialpagewrite caused by missing spinlock protection
of openfile linked list.  Allow writebehind caching errors to 
be returned to the application at file close.

Version 0.76
------------
Clean up options displayed in /proc/mounts by show_options to
be more consistent with other filesystems.

Version 0.75
------------
Fix delete of readonly file to Windows servers.  Reflect
presence or absence of read only dos attribute in mode
bits for servers that do not support CIFS Unix extensions.
Fix shortened results on readdir of large directories to
servers supporting CIFS Unix extensions (caused by
incorrect resume key).

Version 0.74
------------
Fix truncate bug (set file size) that could cause hangs e.g. running fsx

Version 0.73
------------
unload nls if mount fails.

Version 0.72
------------
Add resume key support to search (readdir) code to workaround
Windows bug.  Add /proc/fs/cifs/LookupCacheEnable which
allows disabling caching of attribute information for
lookups.

Version 0.71
------------
Add more oplock handling (distributed caching code).  Remove
dead code.  Remove excessive stack space utilization from
symlink routines.

Version 0.70
------------
Fix oops in get dfs referral (triggered when null path sent in to
mount).  Add support for overriding rsize at mount time.

Version 0.69
------------
Fix buffer overrun in readdir which caused intermittent kernel oopses.
Fix writepage code to release kmap on write data.  Allow "-ip=" new 
mount option to be passed in on parameter distinct from the first part
(server name portion of) the UNC name.  Allow override of the
tcp port of the target server via new mount option "-port="  

Version 0.68
------------
Fix search handle leak on rewind.  Fix setuid and gid so that they are 
reflected in the local inode immediately.  Cleanup of whitespace
to make 2.4 and 2.5 versions more consistent.


Version 0.67
------------
Fix signal sending so that captive thread (cifsd) exits on umount 
(which was causing the warning in kmem_cache_free of the request buffers
at rmmod time).  This had broken as a sideeffect of the recent global
kernel change to daemonize.  Fix memory leak in readdir code which
showed up in "ls -R" (and applications that did search rewinding).

Version 0.66
------------
Reconnect tids and fids after session reconnection (still do not
reconnect byte range locks though).  Fix problem caching
lookup information for directory inodes, improving performance,
especially in deep directory trees.  Fix various build warnings.

Version 0.65
------------
Finish fixes to commit write for caching/readahead consistency.  fsx 
now works to Samba servers.  Fix oops caused when readahead
was interrupted by a signal.

Version 0.64
------------
Fix data corruption (in partial page after truncate) that caused fsx to
fail to Windows servers.  Cleaned up some extraneous error logging in
common error paths.  Add generic sendfile support.

Version 0.63
------------
Fix memory leak in AllocMidQEntry.
Finish reconnection logic, so connection with server can be dropped
(or server rebooted) and the cifs client will reconnect.  

Version 0.62
------------
Fix temporary socket leak when bad userid or password specified 
(or other SMBSessSetup failure).  Increase maximum buffer size to slightly
over 16K to allow negotiation of up to Samba and Windows server default read 
sizes.  Add support for readpages

Version 0.61
------------
Fix oops when username not passed in on mount.  Extensive fixes and improvements
to error logging (strip redundant newlines, change debug macros to ensure newline
passed in and to be more consistent).  Fix writepage wrong file handle problem,
a readonly file handle could be incorrectly used to attempt to write out
file updates through the page cache to multiply open files.  This could cause
the iozone benchmark to fail on the fwrite test. Fix bug mounting two different
shares to the same Windows server when using different usernames
(doing this to Samba servers worked but Windows was rejecting it) - now it is
possible to use different userids when connecting to the same server from a
Linux client. Fix oops when treeDisconnect called during unmount on
previously freed socket.

Version 0.60
------------
Fix oops in readpages caused by not setting address space operations in inode in 
rare code path. 

Version 0.59
------------
Includes support for deleting of open files and renaming over existing files (per POSIX
requirement).  Add readlink support for Windows junction points (directory symlinks).

Version 0.58
------------
Changed read and write to go through pagecache. Added additional address space operations.
Memory mapped operations now working.

Version 0.57
------------
Added writepage code for additional memory mapping support.  Fixed leak in xids causing
the simultaneous operations counter (/proc/fs/cifs/SimultaneousOps) to increase on 
every stat call.  Additional formatting cleanup. 

Version 0.56
------------
Fix bigendian bug in order of time conversion. Merge 2.5 to 2.4 version.  Formatting cleanup.   

Version 0.55
------------
Fixes from Zwane Mwaikambo for adding missing return code checking in a few places.
Also included a modified version of his fix to protect global list manipulation of
the smb session and tree connection and mid related global variables.

Version 0.54
------------
Fix problem with captive thread hanging around at unmount time.  Adjust to 2.5.42-pre
changes to superblock layout.   Remove wasteful allocation of smb buffers (now the send 
buffer is reused for responses).  Add more oplock handling. Additional minor cleanup.

Version 0.53
------------
More stylistic updates to better match kernel style.  Add additional statistics
for filesystem which can be viewed via /proc/fs/cifs.  Add more pieces of NTLMv2
and CIFS Packet Signing enablement.

Version 0.52
------------
Replace call to sleep_on with safer wait_on_event.
Make stylistic changes to better match kernel style recommendations.
Remove most typedef usage (except for the PDUs themselves).

Version 0.51
------------
Update mount so the -unc mount option is no longer required (the ip address can be specified
in a UNC style device name.   Implementation of readpage/writepage started.

Version 0.50
------------
Fix intermittent problem with incorrect smb header checking on badly 
fragmented tcp responses

Version 0.49
------------
Fixes to setting of allocation size and file size.

Version 0.48
------------
Various 2.5.38 fixes.  Now works on 2.5.38

Version 0.47
------------
Prepare for 2.5 kernel merge.  Remove ifdefs.

Version 0.46
------------
Socket buffer management fixes.  Fix dual free.

Version 0.45
------------
Various big endian fixes for hardlinks and symlinks and also for dfs.

Version 0.44
------------
Various big endian fixes for servers with Unix extensions such as Samba

Version 0.43
------------
Various FindNext fixes for incorrect filenames on large directory searches on big endian
clients.  basic posix file i/o tests now work on big endian machines, not just le

Version 0.42
------------
SessionSetup and NegotiateProtocol now work from Big Endian machines.
Various Big Endian fixes found during testing on the Linux on 390.  Various fixes for compatibility with older
versions of 2.4 kernel (now builds and works again on kernels at least as early as 2.4.7).

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.

Version 0.40
------------
Implemented "Raw" (i.e. not encapsulated in SPNEGO) NTLMSSP (i.e. the Security Provider Interface used to negotiate
session advanced session authentication).  Raw NTLMSSP is preferred by Windows 2000 Professional and Windows XP.
Began implementing support for SPNEGO encapsulation of NTLMSSP based session authentication blobs
(which is the mechanism preferred by Windows 2000 server in the absence of Kerberos).

Version 0.38
------------
Introduced optional mount helper utility mount.cifs and made coreq changes to cifs vfs to enable
it. Fixed a few bugs in the DFS code (e.g. bcc two bytes too short and incorrect uid in PDU).

Version 0.37
------------
Rewrote much of connection and mount/unmount logic to handle bugs with
multiple uses to same share, multiple users to same server etc.

Version 0.36
------------
Fixed major problem with dentry corruption (missing call to dput)

Version 0.35
------------
Rewrite of readdir code to fix bug. Various fixes for bigendian machines.
Begin adding oplock support.  Multiusermount and oplockEnabled flags added to /proc/fs/cifs
although corresponding function not fully implemented in the vfs yet

Version 0.34
------------
Fixed dentry caching bug, misc. cleanup 

Version 0.33
------------
Fixed 2.5 support to handle build and configure changes as well as misc. 2.5 changes.  Now can build
on current 2.5 beta version (2.5.24) of the Linux kernel as well as on 2.4 Linux kernels.
Support for STATUS codes (newer 32 bit NT error codes) added.  DFS support begun to be added.

Version 0.32
------------
Unix extensions (symlink, readlink, hardlink, chmod and some chgrp and chown) implemented
and tested against Samba 2.2.5


Version 0.31
------------
1) Fixed lockrange to be correct (it was one byte too short)

2) Fixed GETLK (i.e. the fcntl call to test a range of bytes in a file to see if locked) to correctly 
show range as locked when there is a conflict with an existing lock.

3) default file perms are now 2767 (indicating support for mandatory locks) instead of 777 for directories
in most cases.  Eventually will offer optional ability to query server for the correct perms.

3) Fixed eventual trap when mounting twice to different shares on the same server when the first succeeded 
but the second one was invalid and failed (the second one was incorrectly disconnecting the tcp and smb
session) 

4) Fixed error logging of valid mount options

5) Removed logging of password field.

6) Moved negotiate, treeDisconnect and uloggoffX (only tConx and SessSetup remain in connect.c) to cifssmb.c
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,
nor is the symlink support using the Unix extensions

8) Started adding the readlink and follow_link code 

Version 0.3 
-----------
Initial drop

