forward declare this function
====================
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.
====================
returns void, but, whatever
FIXES 74708
this should fix the issue with cbfree being corrupted. a more exhaustive pointer-blunting patch should probably be pulled in, but, this is simple and obvious
To prevent stripping, specify the '--disable-strip-binaries' option on
the ./configure command line. fileserver and volserver are never stripped.
When --enable-debug is specified, binaries will not be stripped by default.
disable the option by default. require the daemonCheckVolCBInterval
registry value be set in order to activate it.
do not renew .readonly volumes whose callbacks are less than 30 minutes
old.
add -ctime parameter which produces human readable expiration times.
Doesn't work with OpenAFS for Windows prior to 1.5.28 because time()
was not used in those versions for tracking expiration times.
A .readonly volume callback applies to the entire volume. Track it
in the cm_volume_t cbExpiresRO field and apply it to all cm_scache_t
objects with valid callbacks that are associated with that volume upon
each daemon callback check. This will prevent premature callback
expiration.
Also, attempt to automatically refresh the callbacks every 30 minutes
by obtaining a callback on the volume root. This value is configurable
with the "daemonCheckVolCBInterval" registry value.
Change from osi_Time() to time() for expiration values in order to
permit conversion to human readable values in cmdebug.
the difference between osi_assert() and osi_assertx() is whether or not
a description is specified as part of the call. When no message is
specified afsd_notifier() is called with a NULL msgp parameter. This
results in a null pointer dereference during the EventLog() call.
As a result, none of the information describing the assertion is written
to the log file.
This commit sets a default message for use when no other message is
provided and it replaces all calls to osi_assert with osi_assertx and
adds descriptions.
One of the issues that has become a serious problem since the addition
of the local directory updates is that although cm_SyncOp synchronizes
operations, it does not preserve the order of requests. This has always
been a problem in that it has been possible for a request to fail to
complete due to its worker thread's bad luck. When a request takes
longer than the Windows SMB Redirector's timeout, the SMB Redirector
tears down the SMB virtual circuit.
When using the local directory updates it is really important that
the directory update operations complete in the order that they were
sent to the file server. If they don't, then the local directory
state and the file server state will not match and the local directory
state must be discarded which in turn forces a new read of the entire
directory contents over the network.
This patch adds a new cm_scache_waiter_t object that is used to store
the current thread, buffer, and syncop flags within a waiters queue
on each cm_scache_t object. If a thread is forced to sleep in cm_SyncOp,
upon waking it will check to see if there are any other threads waiting
that are attempting to perform a similar task ahead of it in the queue.
If yes, the thread goes back to sleep. If not, it goes ahead and
enters the cm_SyncOp conflict resolution block.
This patch has the additional side effect of reducing the number of
competing threads that must obtain the cm_scache_t mutex and process
the cm_SyncOp conflict resolution block. As a result, the overall
CPU utilization of the service and the clock time associated with
processing requests will be reduced.