1 #!/afs/athena/contrib/perl/perl
2 # Usage: afs_quota path quota
4 require "/moira/bin/afs_utils.pl";
6 die "Usage: $0 path quota\n" unless (@ARGV==2);
9 $path =~ s:^/afs/([^.]):/afs/.\1:;
11 system("$fs checkb >/dev/null");
13 open(PROG,"$fs lv $path|");
16 die "Unable to get information about $path\n" if ($?);
18 @tmp = split(/\s+/, shift(@fs));
20 @tmp = split(/\s+/, shift(@fs));
23 open(PROG,"$fs whichcell $path|");
26 die "Unable to get information about $path\n" if ($?);
29 ($cell=pop(@tmp)) =~ s/^'(.*)'$/\1/;
32 open(PROG,"$vos ex $vname -cell $cell|");
35 die "Unable to get volume information about $vname ($path)\n" if ($?);
38 ($vusage, $vusage, $vusage, $vusage) = split(/\s+/,$_);
40 ($asrv,$asrv,$apart) = split(/\s+/,$_);
42 open(PROG,"$vos partinfo $asrv $apart -cell $cell|");
45 die "Unable to get partition information about $asrv $apart\n" if ($?);
47 @tmp = split(/\s+/,$_);
49 $dusage = $dtotal - $tmp[5];
51 system("$fs","sq",$path,$newq);
52 die "Unable to change quota on $path\n" if ($?);
54 &afs_quota_adj($cell,$asrv,$apart,$newq-$oldq,$dusage);
56 if ($dusage > (0.9 * $dtotal)) {
57 system("$zwrite","-q","-n","-c","afsadm","-i","moira","-m",
58 "WARNING: Disk usage on $asrv:$apart is greater than 90%
59 Used $dusage K out of $dtotal K");
61 elsif (($dusage + ($newq-$vusage)) > (0.9 * $dtotal)) {
62 system("$zwrite","-q","-n","-c","afsadm","-i","moira","-m",
63 "Quota change on volume $vname, if used completely will cause
64 $asrv:$apart to be over 90% used.
66 Current volume usage: $vusage, old quota $oldq, new quota $newq");
68 elsif ($newq-$oldq > 149999) {
69 system("$zwrite","-q","-n","-c","afsadm","-i","moira","-m",
70 "Increased quota on volume $vname ($asrv:$apart) from $oldq to $newq");