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