]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-windows-buf-setdirty-20080724
authorJeffrey Altman <jaltman@secure-endpoints.com>
Thu, 24 Jul 2008 20:33:53 +0000 (20:33 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Thu, 24 Jul 2008 20:33:53 +0000 (20:33 +0000)
LICENSE MIT

Everytime the CM_BUF_DIRTY flag is set on a cm_buf_t, the userp field
on the cm_buf_t must also be set.  Add a cm_user_t parameter to buf_SetDirty()
so that each function that calls it doesn't have to manually set the
last write user.  This improves code readability and the abstraction layering.

(cherry picked from commit c10b26ca355e47bfb486de971ac275fb281461ca)

src/WINNT/afsd/cm_buf.c
src/WINNT/afsd/cm_buf.h
src/WINNT/afsd/rawops.c
src/WINNT/afsd/smb.c

index 2689a8e4415ca7fedabe65dbc81364741f29a7ee..a305d12c219f31ac32e3c4ff22d9371fd9859ac9 100644 (file)
@@ -1282,7 +1282,7 @@ void buf_CleanWait(cm_scache_t * scp, cm_buf_t *bp, afs_uint32 locked)
  *
  * The buffer must be locked before calling this routine.
  */
-void buf_SetDirty(cm_buf_t *bp, afs_uint32 offset, afs_uint32 length)
+void buf_SetDirty(cm_buf_t *bp, afs_uint32 offset, afs_uint32 length, cm_user_t *userp)
 {
     osi_assertx(bp->magic == CM_BUF_MAGIC, "invalid cm_buf_t magic");
     osi_assertx(bp->refCount > 0, "cm_buf_t refcount 0");
@@ -1341,6 +1341,14 @@ void buf_SetDirty(cm_buf_t *bp, afs_uint32 offset, afs_uint32 length)
         }
         lock_ReleaseWrite(&buf_globalLock);
     }
+
+    /* and record the last writer */
+    if (bp->userp != userp) {
+        cm_HoldUser(userp);
+        if (bp->userp) 
+            cm_ReleaseUser(bp->userp);
+        bp->userp = userp;
+    }
 }
 
 /* clean all buffers, reset log pointers and invalidate all buffers.
index 757d77dc1fa47feb76abbd62103a05e57e3ce48a..752c4ce2cac2f44607eb6f5c0fb806604c3235c5 100644 (file)
@@ -166,7 +166,7 @@ extern long buf_CleanAsync(cm_buf_t *, cm_req_t *);
 
 extern void buf_CleanWait(cm_scache_t *, cm_buf_t *, afs_uint32 locked);
 
-extern void buf_SetDirty(cm_buf_t *, afs_uint32 offset, afs_uint32 length);
+extern void buf_SetDirty(cm_buf_t *, afs_uint32 offset, afs_uint32 length, cm_user_t *);
 
 extern long buf_CleanAndReset(void);
 
index 73de291f18f01f4195ad91ed4b3d56f676c548fc..0848621be94bcb961d078751899fc3ffbe32a0c1 100644 (file)
@@ -322,15 +322,7 @@ long WriteData(cm_scache_t *scp, osi_hyper_t offset, long count, char *op,
 
         /* now copy the data */
         memcpy(bufferp->datap + bufIndex, op, nbytes);
-        buf_SetDirty(bufferp, bufIndex, nbytes);
-
-        /* and record the last writer */
-        if (bufferp->userp != userp) {
-            cm_HoldUser(userp);
-            if (bufferp->userp) 
-                cm_ReleaseUser(bufferp->userp);
-            bufferp->userp = userp;
-        }
+        buf_SetDirty(bufferp, bufIndex, nbytes, userp);
 
         /* adjust counters, pointers, etc. */
         op += nbytes;
index a92fc24a0efe832b2fdc039b2295a2375fc61bf8..193b0b43f0abd2311a84941a1c7d5f2eeefd0f80 100644 (file)
@@ -6787,15 +6787,7 @@ long smb_WriteData(smb_fid_t *fidp, osi_hyper_t *offsetp, afs_uint32 count, char
 
         /* now copy the data */
         memcpy(bufferp->datap + bufIndex, op, nbytes);
-        buf_SetDirty(bufferp, bufIndex, nbytes);
-
-        /* and record the last writer */
-        if (bufferp->userp != userp) {
-            cm_HoldUser(userp);
-            if (bufferp->userp) 
-                cm_ReleaseUser(bufferp->userp);
-            bufferp->userp = userp;
-        }
+        buf_SetDirty(bufferp, bufIndex, nbytes, userp);
 
         /* adjust counters, pointers, etc. */
         op += nbytes;