]> andersk Git - moira.git/blobdiff - incremental/afs_utils.pl
Now rcp'ing with encryption, and actually checking that backup succeeded.
[moira.git] / incremental / afs_utils.pl
index 29c47389f4e90a5c784d7df98f206283312de1c4..06cbecb0fcac06f28a0cb95c26928ee41fe1492a 100644 (file)
@@ -1,7 +1,10 @@
+# $Header$
+
 $afsbin="/moira/bin";
 $vos="$afsbin/vos";
 $pts="$afsbin/pts";
 $fs="$afsbin/fs";
+$zwrite="/usr/athena/bin/zwrite";
 
 $afs_data="/moira/afs/afs_data";
 $afs_save="$afs_data.tmp";
@@ -9,6 +12,22 @@ $afs_save="$afs_data.tmp";
 $LOCK_EX=2;
 $LOCK_UN=8;
 
+%vtypes_ATHENA_MIT_EDU =
+    ("ACTIVITY", "activity",
+     "APROJ", "aproj",
+     "AREF", "aref",
+     "CONTRIB", "contrib",
+     "COURSE", "course",
+     "HOMEDIR", "user",
+     "LEASE", "dept",
+     "ORG", "org",
+     "PROJECT", "project",
+     "REF", "ref",
+     "SW", "sw",
+     "SYSTEM", "system",
+     "UROP", "urop",
+     );
+
 # File format:
 #    cell server partition total used alloc
 
@@ -49,21 +68,25 @@ sub afs_unlock
 #    max[ (2*free space) - (unused quota) ]
 #    = max(2*total - usage - alloc)
 #
-# Note: This routine does not actually adjust the quota; the caller
-# should use afs_quota_adj();
+# Note: This routine does not actually adjust the quota;
+# the calling routine should use afs_quota_adj();
 
 sub afs_find
 {
-    local($cell,$type,$quota) = @_;
-    local($j);
-    local(@max) = '';
+    local($cell,$type,$quota,@except) = @_;
+    local($j,$k);
+    local(@max) = ("", "", -10000000);
 
     &afs_lock;
     chop(@afs_data);
 
+  sloop:
     for (@afs_data) {
        local ($a, $asrv, $apart, $t, $total, $used, $alloc) = split(/\s+/,$_);
        next if ($a ne $cell || !$total || $type !~ /$t/);
+       for $j (@except) {
+           next sloop if ($j eq $asrv);
+       }
        $alloc = $used if ($alloc < $used);
        $j = 2*$total - $used - $alloc;
        @max = ($asrv,$apart,$j) if (! @max || $j > $max[2]);
@@ -78,7 +101,7 @@ sub afs_find
 #
 sub afs_quota_adj
 {
-    local($cell,$asrv,$apart,$adj) = @_;
+    local($cell,$asrv,$apart,$adj,$dusage) = @_;
     local($found) = 0;
 
     &afs_lock;
@@ -87,8 +110,9 @@ sub afs_quota_adj
     for (@afs_data) {
        local ($c, $as, $ap, $t, $total, $used, $alloc) = split(/\s+/,$_);
        if ($c eq $cell && $as eq $asrv && $ap eq $apart) {
+           $dusage = $used unless ($dusage);
            $alloc += $adj;
-           $_ = join(' ',$c,$asrv,$apart,$t,$total,$used,$alloc);
+           $_ = join(' ',$c,$asrv,$apart,$t,$total,$dusage,$alloc);
            $found = 1;
        }
        print SRV "$_\n";
This page took 0.032785 seconds and 4 git commands to generate.