Be more liberal when parsing ThisCell. Accept and ignore leading and
trailing whitespace and anything after the first whitespace character on
the first line. Return an error for a read error or for an empty cell
name.
Rather than setting AFS_PARAM_COMMON as part of the sysname guessing code,
guess the sysname first and then sent AFS_PARAM_COMMON in a separate case
statement based on the results. Otherwise, it isn't set when
--with-afs-sysname is used explicitly, resulting in a broken Linux build.
Path canonicalization for commands such as bos getlog was only applied for
absolute paths; relative paths were still constructed relative to the
canonical directory. Modify the path canonicalization routines to also
canonicalize the base directory for relative paths.
when offline folders are enabled, the old file name sent in a rename
operation is sent in all uppercase even when the file name is not.
this patch attempts a case insensitive match after the case sensitive
match fails.
The return value of buf_CleanAsync is not an error value but a flag
indicating whether or not the buffer was in fact dirty. Do not treat
it as an error. The error state is stored in the buffer itself.
Document (at least partially) AFS's mapping of Kerberos v5 principal names
to Kerberos v4 format in the aklog man page. Also document that -setpag
may not always work.
Ensure that tkt_DecodeTicket and rxkad_CheckResponse return the right
RXKAD errors for ticket expiration or invalidity. Avoid calling
tkt_CheckTimes twice in rxkad_CheckResponse
The file server has been returning RXKADNOAUTH when the time between
the client and server is out of sync. tkt_CheckTimes returns -1 for
recently expired tickets and -2 for tickets that have been expired for
a while. In the -2 case we must return RXKADBADTICKET not RXKADNOAUTH.
Some sites expect single-threaded volume attaches to happen in a specific
order. The parallel attach patch also changed the attach order for sites
not specifying -vattachpar.
kreltime-guard-against-null-tm-20060731 was apparently an
attempt to deal with the possibility of localtime() returning NULL by
using localtime_r instead, and zeroing the tm structure first. This has
two problems. First, localtime_r is not guaranteed to leave its output
buffer untouched or in a sane state in the event it is given invalid
input. More importantly, the second half of this delta fixed the build
on Windows (which apparently lacks localtime_r) at the expense of using
the wrong level of indirection on other platforms.
Simple is nice, but correct is important too. There is nothing wrong
with switching to localtime_r to avoid thread safety issues. However,
the correct fix for the anticipated problem was and is to check the
return value of localtime (or localtime_r), and if it is NULL, fill in
the ktime_date with suitable default values.
The attached patch does not implement the correct fix, but does fix the
double-indirection problem, so butc will again perform correctly instead
of crashing.
====================
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.
====================
====================
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.
====================
iafs_InactiveVCache() calls afs_InvalidateAllSegments() which says
it should be called with the vnode locked. so the lock should
probably be moved to afs_InactiveVCache() so it can be droppped
before calling afs_remunlink().
#ifdef DEBUG_REFCOUNT the ref count log entries so they aren't always
compiled in
comment out the remaining location where the write lock on cm_scacheLock
is dropped in order to obtain the scache mutex on the object returned
from cm_GetNewSCache(). Dropping the lock results in more than one
thread being given the same cm_scache_t which is more dangerous than
blowing away the contents of the object without holding the mutex
ensure that cm_BufWrite is always called with a non-NULL scp. Add
an assertion to double check that we do it all the time.
more cleanup from recent patches. comment out the recycling code because
it is not possible to implement it using the current locking hierarchy.
change cm_BufWrite to take a pointer to cm_scache_t instead of a fid
which must be used to look up a new reference to the cm_scache_t.
more often than not we already have the scp and in the one case we
don't we can let the caller look up the scp and then call cm_BufWrite
if it is found. If not, we have saved a function call and a bunch
of lock operations.
add a lot more logging.
improve the scp mutex handling within smb_CloseFID
it is possible for a file to be created, buffers to become dirty from
writes, the file to be deleted, the stat cache entry to be reused, and
the dirty buffers to remain dirty until the end of time.
stat cache entry starvation can occur because of large numbers of dirty
buffers which take too long to be written to the file server. The
thread that writes dirty buffers in background writes/checks a small
number of buffers, SQRT(buf-count), and then sleeps for 5 seconds.
Writing all of the dirty buffers via this algorithm produces untimely
results.
threads can end up waiting for a callback on the same stat cache entry
even though there are no threads actually attempting to perform the
FetchStatus.
And:
Fix prototypes
Optimize cm_GetNewSCache to reuse scache entries for deleted files
and entries not in the hashtable before allocating a new one. This
keeps the entries in the hashtable to a minimum and thereby improving
performance for all other operations which must lookup a scache entry
by FID.
Add support for Sequential and Random Access flags