This patch fixes several issues:
* the smb virtual circuits can be active and/or dead. this patch
improves the handling of vc's making the transition from active
to dead
* correct the refcounts on the smb_user_t and smb_vc_t objects
* replace the deprecated GetCurrentTime() with GetTickCounts() which
is the new name. This function needs to be replaced with something
else because its return value wraps after 49.7 days
* hold the correct locks when adjusting the scp->fileLocksH queue
* add new event log entries for unexpected session closures and
send packet failures
Add a lockDataVersion field to cm_scache_t. This data version is
compared to the cm_scache_t dataVersion field in the following
circumstances:
* lock upgrades from read to write in which the lock must be released
given current file server rpcs
* lock downgrades from write to read in which the lock must be released
given current file server rpcs
* lost locks due to network disconnect. if the data version has not
changed then re-obtaining the lock is safe to do
the smb_username_t objects are reference counted but they were never
released on their own accord. Instead the smb_uid_t objects when
released were also cleaning up the smb_username_t. Since the smb_username_t
is reused, now that smb_user_t objects are being cleaned up, this was
a problem.
When SMB sessions are prematurely terminated as part of the tear down
of the virtual circuit we must clean up any remaining file handles,
tree connections, and user sessions.
* Update architectural documentation
* Allow locks to be obtained as soon as it is possible instead of
enforcing a requirement that locks be granted in order.
* Fix other bugs
* Disable byte range lock processing
For afsd_service.exe, properly use the Event Log by constructing
message strings stored in a MESSAGETEXT resource. This patch also
removes a large number of debugging related event messages that
should never have been seen by an end user. That data is now
logged to the trace.log where it should have been logged initially.
Similar changes need to be implemented for afslogon.dll and afscreds.exe
The afsd_eventlog.[ch] files should be broken out into its own library
so that it can be reused efficiently.
The afsreg.h header was cleaned up to ensure name consistency and to
remove the last vestiges of "IBM AFS".
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
Do not change "AFS Client" to "OpenAFS Client" unless the installers
are also updated.
====================
remove temporary files upon clean
The afs_pioctl.c change should fix a real crash (panic), but fs flushv isn't
that common an operation.
Other changes:
don't GUNLOCK() around vnode_get(). we weren't consistent about it, and it
doesn't appear to be strictly required.
handle vnode_get() failures in more cases
darwin_vn_hold will panic if vnode is terminating rather than mess up the
refcounts.
Generate vnode_if_newproto.h and vnode_if_typedef.h in case they aren't in
the kernel build directory, for example if the kernel has been configed but
not built.
Add man pages for rxgen and cmdebug. The cmdebug man page was written from
scratch based on the source code. The rxgen man page is a conversion of an
old TeX document to POD.
The procmgmt library replaces the C RunTime Library's signal handlers
but does not restore them on process detachment. This leaves the
process with signal handlers pointing to invalid code that generates
an invalid access error during process termination if the library
was previously unloaded.
potential reclaim in progress fix, and per Chaskiel,
"I don't remember why I put it there, but the fact that
it gets triggered means that we're leaking a vcache object lock. It looks
like the "rename to .__afsXXXX" codepath is responsible (as afsrename does
not use the fact that adp (or aodp) is locked by afs_remove, and locks it
again. I'm surprised it's not deadlocking)" so i coded up a fix
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
chaskiel says
The RHS shouldn't be a double negative...
There's no bug (other than the assert itself)
Add new man pages for livesys and voldump. Fix the man page for sys to say
what it actually does, rather than implying that it works like livesys, and
to recommend livesys instead. Fix a path error in the NetInfo
documentation. Update the README for the current status, including
listing all installed commands that don't have man pages. (There may still
be some subcommands that don't have man pages but aren't listed.)
On installation, substitute the configured paths into the man pages,
replacing the Transarc paths. Also fix a problem with the way that
pinstall was being used to install man pages. (Silly me, I was assuming
it had the same behavior as install.)
This is just a quick first pass. Longer term, it's probably better to
replace all paths in the man pages with unambiguous tokens and then
replace those tokens instead of assuming that the man pages use Transarc
paths and replacing those paths specifically. The current method has a
few minor problems, such as not being able to distinguish between the
various paths that make up /usr/afs/bin. Still, the results of this method
are good enough to start with.
Move man page generation out into a separate script that's just invoked
from regen.sh, so that someone can run that separate script later if they
wish. Make that script more robust against problems such as empty podN
directories. Diagnose a missing pod2man and warn about old versions of
Pod::Man.
Also, remove the old programs used to do the initial conversion from HTML.
Enough post-conversion editing was done that they're no longer necessary
except for historical curiosity, and for that purpose they can be pulled
out of CVS.
SIZE_MAX should be UINT_MAX if not defined
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
64-bit type safety changes required for successful compilation
on Windows 64-bit systems with the VS 2005 compiler