overquota and diskfull errors are detected while writing dirty buffers
to the file server. A flag is set on the scp so that the error can
be returned to the caller. cm_FSync was clearing the flag without
returning the error. This permitted calls to Win32 WriteFile to report
success even when they failed.
FIXES 30589
Check for krb524 functions in libkrb524 if not found in libkrb5 so that the
Kerberos v5 support will build on RHEL3. Thanks to Derek Atkins for the
debugging and testing.
Autoconf 2.60 will replace some variables, most notably mandir, with values
relative to datarootdir, a new variable. Add settings of datarootdir to
the affected files.
This patch adds large file support (> 2GB) to the CIFS server and
the cache manager.
It also corrects a significant oversight where the definition of
struct rx_call was inconsistent due to a failure to define AFS_PTHREAD_ENV
prior to including rx.h in all source files. This prevented all errors
during rx_Read and rx_Write to be ignored.
When Freelance mode is not in use the cache manager must load the root.afs
volume of the default cell in order to be able to start. Unfortunately,
if the first vlserver fails the request to obtain the volume information
will timeout and no retries will be performed. This patch performs up
to 10 retries in the initialization code in order to enable the vlservers
to be marked down so that failover can occur.
"the non AFS_GLOBAL_RXLOCK_KERNEL version of
rxi_ReceiveAckPacket() wasnt counting 'hard' acks and not opening the
congestion window. using rx_Readv() directs the incoming packets into
the target iov, and sends a hard ack (skipping soft acks). "
A deadlock was detected when performing "fs flushall" if the file
server reports VNOVNODE. The scp->createBufferLock is already
held by the current thread and there is no mechanism to propagate
the knowledge. Therefore, an alternate mechanism for clearing the
cache must be developed. A new function cm_RecycleSCache(scp,flags)
has been extracted from cm_GetNewSCache(). This function performs
the task of recycling an cm_scache_t object. When called from
cm_GetNewSCache() with no flags the expectation is that there are
no associated buffers that are queued to be read or written. When
called from cm_Analyze() with the CM_SCACHE_RECYCLEFLAG_DESTROY_BUFFERS
flag, any queued buffers will be de-queued and marked as if the operations
were performed so the data can be discarded.
This patch also addresses the following issues:
* CM_ERROR codes were logged as "unknown" by cm_Analyze.
* In response to VNOVNODE, the parent is only discarded if the current
cm_scache_t is not a directory.
* In the Ioctl FlushFile and FlushVolume functions, there were no
checks to protect against flushing the Freelance SCache entries.
* In FlushFile, the wrong cm_scache_t object was being released.
* In cm_GetNewSCache, do not allow Freelance SCache entries to be
recycled. Choose a new entry if cm_RecycleSCache fails.
Speed up the performance of the cache manager by not holding the
smb_fid_t mutex across calls to cm_SyncOp and AFS RPCs.
Ensure that all smb_fid_t flag references are protected.