]>
Commit | Line | Data |
---|---|---|
6231b320 | 1 | #!/afs/athena/contrib/perl/perl |
2 | # Usage: afs_quota path quota | |
3 | ||
564ed5a8 | 4 | $incdir = "/mit/moiradev/src/incremental"; |
5 | require "$incdir/afs_utils.pl"; | |
6231b320 | 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 | ||
564ed5a8 | 38 | $_ = shift(@tmp); |
39 | ($vusage, $vusage, $vusage, $vusage) = split(/\s+/,$_); | |
40 | $_ = shift(@tmp); | |
6231b320 | 41 | ($asrv,$asrv,$apart) = split(/\s+/,$_); |
42 | ||
564ed5a8 | 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 | ||
6231b320 | 52 | system("$fs","sq",$path,$newq); |
53 | die "Unable to change quota on $path\n" if ($?); | |
39e0b5bb | 54 | |
6231b320 | 55 | &afs_quota_adj($cell,$asrv,$apart,$newq-$oldq); |
119f209e | 56 | |
564ed5a8 | 57 | if ($dusage > (0.9 * $dtotal)) { |
58 | system("$zwrite","-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","-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","-c","afsadm","-m", | |
71 | "Increased quota on volume $vname ($asrv:$apart) from $oldq to $newq"); | |
72 | } | |
39e0b5bb | 73 | |
119f209e | 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); |