]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
viced: disable accelerated copyonwrite
authorDerrick Brashear <shadow@dementix.org>
Sun, 27 Nov 2011 16:23:29 +0000 (11:23 -0500)
committerDerrick Brashear <shadow@dementix.org>
Thu, 1 Dec 2011 17:57:19 +0000 (09:57 -0800)
don't do multistage CoW

FIXES 130295
(cherry picked from commit 97540f78aa333feefe9f567ee71695c1d6451f5c)

Change-Id: I1cd9d54ec9202aa4a11828cd443622413f195687
Reviewed-on: http://gerrit.openafs.org/6160
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: Derrick Brashear <shadow@dementix.org>
src/viced/afsfileprocs.c

index 0a4f8b5e0fedc556e66c7a10fc1dbace1b4ede86..d3a1de7e7670d5bf5055ad30e8ee7d83b66a2cb7 100644 (file)
@@ -7346,7 +7346,7 @@ StoreData_RXStyle(Volume * volptr, Vnode * targetptr, struct AFSFid * Fid,
     int linkCount = 0;         /* link count on inode */
     afs_fsize_t CoW_off, CoW_len;
     ssize_t nBytes;
-    FdHandle_t *fdP, *origfdP = NULL;
+    FdHandle_t *fdP;
     struct in_addr logHostAddr;        /* host ip holder for inet_ntoa */
     afs_ino_str_t stmp;
 
@@ -7411,32 +7411,20 @@ StoreData_RXStyle(Volume * volptr, Vnode * targetptr, struct AFSFid * Fid,
             * mechanisms (i.e. copy on write overhead.) Also the right size
             * of the disk will be recorded...
             */
-           origfdP = fdP;
+           FDH_CLOSE(fdP);
            VN_GET_LEN(size, targetptr);
            volptr->partition->flags &= ~PART_DONTUPDATE;
            VSetPartitionDiskUsage(volptr->partition);
            volptr->partition->flags |= PART_DONTUPDATE;
            if ((errorCode = VDiskUsage(volptr, nBlocks(size)))) {
                volptr->partition->flags &= ~PART_DONTUPDATE;
-               FDH_CLOSE(origfdP);
                return (errorCode);
            }
 
-           CoW_len = (FileLength >= (Length + Pos)) ? FileLength - Length : Pos;
-           CopyOnWrite_calls++;
-           if (CoW_len == 0) CopyOnWrite_size0++;
-           if (Pos == 0) CopyOnWrite_off0++;
-           if (CoW_len > CopyOnWrite_maxsize) CopyOnWrite_maxsize = CoW_len;
-
-           ViceLog(1, ("StoreData : calling CopyOnWrite on vnode %u.%u (%s) "
-                       "off 0x0 size 0x%llx\n",
-                       afs_printable_VolumeId_u(V_id(volptr)),
-                       afs_printable_VnodeId_u(targetptr->vnodeNumber),
-                       V_name(volptr), Pos));
-           if ((errorCode = CopyOnWrite(targetptr, volptr, 0, Pos))) {
+           ViceLog(25, ("StoreData : calling CopyOnWrite on  target dir\n"));
+           if ((errorCode = CopyOnWrite(targetptr, volptr, 0, MAXFSIZE))) {
                ViceLog(25, ("StoreData : CopyOnWrite failed\n"));
                volptr->partition->flags &= ~PART_DONTUPDATE;
-               FDH_CLOSE(origfdP);
                return (errorCode);
            }
            volptr->partition->flags &= ~PART_DONTUPDATE;
@@ -7445,7 +7433,6 @@ StoreData_RXStyle(Volume * volptr, Vnode * targetptr, struct AFSFid * Fid,
            if (fdP == NULL) {
                ViceLog(25,
                        ("StoreData : Reopen after CopyOnWrite failed\n"));
-               FDH_REALLYCLOSE(origfdP);
                return ENOENT;
            }
        }
@@ -7477,7 +7464,6 @@ StoreData_RXStyle(Volume * volptr, Vnode * targetptr, struct AFSFid * Fid,
         AdjustDiskUsage(volptr, adjustSize,
                         adjustSize - SpareComp(volptr)))) {
        FDH_CLOSE(fdP);
-       if (origfdP) FDH_REALLYCLOSE(origfdP);
        return (errorCode);
     }
 
@@ -7576,9 +7562,6 @@ StoreData_RXStyle(Volume * volptr, Vnode * targetptr, struct AFSFid * Fid,
         * need to update the target vnode.
         */
        targetptr->changed_newTime = 1;
-       if (origfdP && (bytesTransfered < Length))      /* Need to "finish" CopyOnWrite still */
-           CopyOnWrite2(origfdP, fdP, Pos + bytesTransfered, NewLength - Pos - bytesTransfered);
-       if (origfdP) FDH_REALLYCLOSE(origfdP);
        FDH_CLOSE(fdP);
        /* set disk usage to be correct */
        VAdjustDiskUsage(&tmp_errorCode, volptr,
@@ -7589,17 +7572,6 @@ StoreData_RXStyle(Volume * volptr, Vnode * targetptr, struct AFSFid * Fid,
        }
        return errorCode;
     }
-    if (origfdP) {                                     /* finish CopyOnWrite */
-       if ( (CoW_off = Pos + Length) < NewLength) {
-           errorCode = CopyOnWrite2(origfdP, fdP, CoW_off, CoW_len = NewLength - CoW_off);
-           ViceLog(1, ("StoreData : CopyOnWrite2 on vnode %u.%u (%s) "
-                       "off 0x%llx size 0x%llx returns %d\n",
-                        afs_printable_VolumeId_u(V_id(volptr)),
-                       afs_printable_VnodeId_u(targetptr->vnodeNumber),
-                       V_name(volptr), CoW_off, CoW_len, errorCode));
-       }
-       FDH_REALLYCLOSE(origfdP);
-    }
     FDH_CLOSE(fdP);
 
     FT_GetTimeOfDay(&StopTime, 0);