client-dir-package-interface-update-20041106
[openafs.git] / src / afs / afs_segments.c
index 72f51cc..6f7560b 100644 (file)
@@ -47,7 +47,8 @@ afs_StoreMini(register struct vcache *avc, struct vrequest *areq)
     register afs_int32 code;
     register struct rx_call *tcall;
     afs_size_t tlen, xlen = 0;
-    XSTATS_DECLS AFS_STATCNT(afs_StoreMini);
+    XSTATS_DECLS;
+    AFS_STATCNT(afs_StoreMini);
     afs_Trace2(afs_iclSetp, CM_TRACE_STOREMINI, ICL_TYPE_POINTER, avc,
               ICL_TYPE_INT32, avc->m.Length);
     tlen = avc->m.Length;
@@ -305,7 +306,8 @@ afs_StoreAllSegments(register struct vcache *avc, struct vrequest *areq,
            struct conn *tc;
            struct osi_file *tfile;
            struct rx_call *tcall;
-           XSTATS_DECLS for (bytes = 0, j = 0; !code && j <= high; j++) {
+           XSTATS_DECLS;
+           for (bytes = 0, j = 0; !code && j <= high; j++) {
                if (dcList[j]) {
                    ObtainSharedLock(&(dcList[j]->lock), 629);
                    if (!bytes)
@@ -896,7 +898,7 @@ afs_InvalidateAllSegments(struct vcache *avc)
        ObtainWriteLock(&tdc->lock, 679);
        ZapDCE(tdc);
        if (vType(avc) == VDIR)
-           DZap(&tdc->f.inode);
+           DZap(tdc);
        ReleaseWriteLock(&tdc->lock);
        afs_PutDCache(tdc);
     }
@@ -1039,6 +1041,12 @@ afs_TruncateAllSegments(register struct vcache *avc, afs_size_t alen,
            afs_CFileTruncate(tfile, newSize);
            afs_CFileClose(tfile);
            afs_AdjustSize(tdc, newSize);
+           if (alen < tdc->validPos) {
+                if (alen < AFS_CHUNKTOBASE(tdc->f.chunk))
+                    tdc->validPos = 0;
+                else
+                    tdc->validPos = alen;
+            }
            ConvertWToSLock(&tdc->lock);
        }
        ReleaseSharedLock(&tdc->lock);