vpurge-needs-no-lock-20060713
authorDerrick Brashear <shadow@dementia.org>
Thu, 13 Jul 2006 19:17:20 +0000 (19:17 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 13 Jul 2006 19:17:20 +0000 (19:17 +0000)
don't hold the VOL_LOCK during vpurgevolume
volserver's transaction stuff (NewTrans, actually) precludes any problem

src/vol/purge.c

index dd94a27..5a64b87 100644 (file)
@@ -63,8 +63,11 @@ static void PurgeIndex_r(Volume * vp, VnodeClass class);
 static void PurgeHeader_r(Volume * vp);
 static void PurgeHeader(Volume * vp);
 
+/* No lock needed. Only the volserver will call this, and only one transaction
+ * can have a given volume (volid/partition pair) in use at a time 
+ */
 void
-VPurgeVolume_r(Error * ec, Volume * vp)
+VPurgeVolume(Error * ec, Volume * vp)
 {
     struct DiskPartition *tpartp = vp->partition;
     char purgePath[MAXPATHLEN];
@@ -86,14 +89,6 @@ VPurgeVolume_r(Error * ec, Volume * vp)
     FSYNC_VolOp(V_id(vp), tpartp->name, FSYNC_VOL_BREAKCBKS, 0, NULL);
 }
 
-void
-VPurgeVolume(Error * ec, Volume * vp)
-{
-    VOL_LOCK;
-    VPurgeVolume_r(ec, vp);
-    VOL_UNLOCK;
-}
-
 #define MAXOBLITATONCE 1000
 /* delete a portion of an index, adjusting offset appropriately.  Returns 0 if
    things work and we should be called again, 1 if success full and done, and -1