rename RWLOCK_INIT to AFS_RWLOCK_INIT in order to maintain naming
consistency and to distinguish them from the new RWLOCK_INIT macros
being used in rx.
====================
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.
====================
LICENSE BSD
add rx/rx_internal.h as a dependency
====================
LICENSE BSD
define RWLOCK_xxx operations
replace MUTEX_xxx operations with RWLOCK_xxx when it is appropriate
to do so. This improves concurrency on multi-processor systems.
revise things so we don't need to check initd outside analyze.c/InitReq
====================
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.
====================
LICENSE IPL10
Windows will deliver to OpenAFS UTF16 strings that are not valid Unicode
and cannot be converted to UTF8. Return bad file name errors in those
cases.
Make sure all file server strings once converted to UTF16 can be converted
back. If not, escape the invalid portions of the string so that the
file can be accessed.
add the error preprocessor symbol to the error string
if both an NRC_BRIDGE and NRC_NOWILD error are received within
the smb_Listener thread, try re-adding the NetbiosName to the lana
before giving up and quiting.
When reporting the attribute of a directory name which happens to be
a symlink object to a file that cannot be accessed or does not exist,
use the target name to guess the type of the object. If it has an
extension, consider it a file, otherwise report it as a directory.
use WNetEnumXXX functions to list connected disk resources.
If the requested drive letter is an AFS resource, perform the pioctl
test. If it is not, fail immediately.
add doxygen comments for some parts of openafs cache manager
====================
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.
====================
LICENSE IPL10
add doxygen comments for some parts of openafs cache manager
The rx library is built in lwp and pthread forms. The methods used to
export data symbols are incompatible between the two. The ubik library
is built with rx headers but only in the lwp form. As a result it is
not possible to link the ubik libs without also including the lwp rx
lib. We have pthreaded servers that require linking to the pthreaded
rx and ubik. To fix the problem all of the macros that assigned values
to variables and were used by ubik have been converted to functions
(but only for Windows.)
Lookups of cell names that have a trailing dot should have the dot removed
otherwise there is a risk of duplicate cell entries since "foo" and "foo."
will not match but both will resolve to the same AFSDB record in DNS.
work harder to ferret out corruption; still reruns itself so if 2 hash chains
are comingled they get split back out correctly without having to flush state
continuously
remove EXT from the function prototype definitions in rx_globals.h
because they result in conflicts with the actual function declarations
and the prototypes in rx_prototypes.h.
in rxi_WriteProc() make sure that rx_call currentPacket is
set to NULL after the rx_packet is added to a queue or
passed to rx_freePacket(). Otherwise we will panic when
we attempt to call rx_freePacket twice on the same packet.
avoid using the same name for the struct and the global so the windows debugger works usefully
====================
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.
====================
LICENSE IPL10
avoid using the same name for the struct and the global so the windows debugger
works usefully
====================
LICENSE IPL10
avoid using the same name for the struct and the global so the windows debugger
works usefully
This patch makes several alterations to the DAFS volserver. The two
major changes are:
* a potential information leak whereby random heap contents could be
exported over the four listvolume rpc variants is corrected
* volume online/offline reporting correctly reports in several additional
corner cases (see the comments in FillVolInfo() in src/volser/volprocs.c
for the complete list of cases):
VOL_STATE_SALVSYNC_REQ:
exclusive state while a fileserver is busy requesting a demand
salvage over the SALVSYNC protocol
V_needsSalvaged():
volume disk header field which is asserted when the fileserver
detects that a volume needs to be salvaged
pending volume operation with command code FSYNC_VOL_OFF:
this command code indicates that a volume utility requires
exclusive access to the volume
pending volume operation and VVolOpLeaveOnline_r returned false:
this indicates that a volume operation is in-progress, and the
internal function VVolOpLeaveOnline_r has decided that the volume
cannot be served concurrently with this volume transaction
Under certain demand salvage scenarios, it is possible for a stale header
to remain cached with the needsSalvaged flag asserted. Although this will
not affect clients accessing the volume over afsint, it is an issue for
volser clients. VAttachVolumeByName in volser will always attempt to pull
the header over FSSYNC before doing a disk read, under the assumption that
a cached entry in the fileserver will be more current than what is on
disk. This patch causes the fileserver to aggresively invalidate disk
header cache entries when a salvage is in-progress.
When a local directory update occurs to the directory pages stored
in the dcache, there is no guarrantee that the same modifications
will be made to the cached pages as are being made by the file server.
In the situation that one or more of the cached pages are recycled,
it is not permissible to obtain the missing pages from the file server
without first invalidating the rest of the cached pages. This is
necessary to prevent mixing of incompatible data representations.
Define a new flag CM_SCACHEFLAG_LOCAL which is used to indicate that
dcache entries were locally modified even though they are not dirty.
As the previous code could have corrupted the contents of the dcache,
bump CM_CONFIG_DATA_VERSION in order to force the rebuilding of the
cache.
Add error CM_ERROR_NOTINCACHE to indicate that a requested directory
page is not present in the cache and will not be created on the fly.
Prefetch all dcache entries for directories and ensure that a consistent
set is being used.
The cm_serverRef_t list reference counts were undercounting and
prematurely freeing the server lists for volumes that experienced
VNOVOL and VMOVED errors. cm_Analyze() must release the server
list before forcibly updating the volume location info. Otherwise,
the list that gets freed is the old one concatenated with the new
one.