]> andersk Git - moira.git/blob - incremental/afs/afs_quota.pl
No old scary perl interpreter.
[moira.git] / incremental / afs / afs_quota.pl
1 #!/usr/athena/bin/perl
2 # Usage: afs_quota path quota
3
4 require "/moira/bin/afs_utils.pl";
5
6 die "Usage: $0 path quota\n" unless (@ARGV==2);
7
8 ($path,$newq) = @ARGV;
9 $path =~ s:^/afs/([^.]):/afs/.\1:;
10
11 system("$fs checkb >/dev/null");
12
13 open(PROG,"$fs lv $path|");
14 chop(@fs=<PROG>);
15 close(PROG);
16 die "Unable to get information about $path\n" if ($?);
17
18 shift(@fs);
19 @tmp = split(/\s+/, shift(@fs));
20 $vname = pop(@tmp);
21 @tmp = split(/\s+/, shift(@fs));
22 $oldq = pop(@tmp);
23 print "$vname $oldq $newq\n";
24
25 open(PROG,"$fs whichcell $path|");
26 chop($_=<PROG>);
27 close(PROG);
28 die "Unable to get information about $path\n" if ($?);
29
30 @tmp=split(/\s+/,$_);
31 ($cell=pop(@tmp)) =~ s/^'(.*)'$/\1/;
32 $cell =~ tr/a-z/A-Z/;
33
34 open(PROG,"$vos ex $vname -cell $cell|");
35 chop(@tmp=<PROG>);
36 close(PROG);
37 die "Unable to get volume information about $vname ($path)\n" if ($?);
38
39 $_ = shift(@tmp);
40 ($vusage, $vusage, $vusage, $vusage) = split(/\s+/,$_);
41 $_ = shift(@tmp);
42 ($asrv,$asrv,$apart) = split(/\s+/,$_);
43
44 open(PROG,"$vos partinfo $asrv $apart -cell $cell|");
45 chop($_ = <PROG>);
46 close(PROG);
47 die "Unable to get partition information about $asrv $apart\n" if ($?);
48
49 @tmp = split(/\s+/,$_);
50 $dtotal = $tmp[11];
51 $dusage = $dtotal - $tmp[5];
52
53 system("$fs","sq",$path,$newq);
54 die "Unable to change quota on $path\n" if ($?);
55
56 &afs_quota_adj($cell,$asrv,$apart,$newq-$oldq,$dusage);
57
58 if ($dusage > (0.9 * $dtotal)) {
59     system("$zwrite","-q","-n","-c","afsadm","-i","moira","-m",
60            "WARNING: Disk usage on $asrv:$apart is greater than 90%
61 Used $dusage K out of $dtotal K");
62 }
63 elsif (($dusage + ($newq-$vusage)) > (0.9 * $dtotal)) {
64     system("$zwrite","-q","-n","-c","afsadm","-i","moira","-m",
65            "Quota change on volume $vname, if used completely will cause
66 $asrv:$apart to be over 90% used.
67
68 Current volume usage: $vusage, old quota $oldq, new quota $newq");
69 }
70 elsif ($newq-$oldq > 3999999) {
71     system("$zwrite","-q","-n","-c","afsadm","-i","moira","-m",
72            "Increased quota on volume $vname ($asrv:$apart) from $oldq to $newq");
73 }
This page took 1.391218 seconds and 5 git commands to generate.