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.  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
------------
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 asterisk.
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 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 
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 override 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 protocol 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 reopen_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 number 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 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 

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

