if (j) {
static afs_uint32 lp1 = 10000, lp2 = 10000;
struct AFSStoreStatus InStatus;
+ struct AFSFetchStatus OutStatus;
+ int doProcessFS = 0;
afs_size_t base, bytes;
afs_uint32 nchunks;
int nomore;
* one which has the writing bit turned on. */
}
if (!code) {
- struct AFSFetchStatus OutStatus;
struct AFSVolSync tsync;
RX_AFS_GUNLOCK();
code = EndRXAFS_StoreData(tcall, &OutStatus, &tsync);
RX_AFS_GLOCK();
hadd32(newDV, 1);
XSTATS_END_TIME;
-
- /* Now copy out return params */
- UpgradeSToWLock(&avc->lock,28); /* keep out others for a while */
- if (!code) { /* must wait til RPC completes to be sure of this info */
- afs_ProcessFS(avc, &OutStatus, areq);
- /* Keep last (max) size of file on server to see if
- * we need to call afs_StoreMini to extend the file.
- */
- if (!moredata)
- maxStoredLength = OutStatus.Length;
-
- }
- ConvertWToSLock(&avc->lock);
+ if (!code) doProcessFS = 1; /* Flag to run afs_ProcessFS() later on */
}
if (tcall) {
RX_AFS_GUNLOCK();
dclist[i] = NULL;
}
+ if (doProcessFS) {
+ /* Now copy out return params */
+ UpgradeSToWLock(&avc->lock,28); /* keep out others for a while */
+ afs_ProcessFS(avc, &OutStatus, areq);
+ /* Keep last (max) size of file on server to see if
+ * we need to call afs_StoreMini to extend the file.
+ */
+ if (!moredata)
+ maxStoredLength = OutStatus.Length;
+ ConvertWToSLock(&avc->lock);
+ doProcessFS = 0;
+ }
+
if (code) {
for (j++; j<=high; j++) {
if ( dcList[j] ) {