]> xenbits.xensource.com Git - people/iwj/osstest.git/commitdiff
ts-xen-build-prep: honour build_lvextend_max runvar
authorIan Jackson <ian.jackson@eu.citrix.com>
Tue, 17 Sep 2013 10:20:11 +0000 (11:20 +0100)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Tue, 17 Sep 2013 10:26:00 +0000 (11:26 +0100)
ts-xen-build-prep

index 4811205c4654a1c2617e41a2f91dfef1216a9d35..daba0923fce177cdb0a6f03d82fc48921c754cf7 100755 (executable)
@@ -31,12 +31,25 @@ exit 0 if $ho->{SharedReady};
 our ($vg);
 
 our $pe_size;
+our $extended_pes = 0;
 
 sub gb2pe ($) {
     my ($gb) = @_;
     return $gb *1024.0*1024.0 / $pe_size;
 }
 
+sub overall_limit_pe ($) {
+    my ($pevar) = @_;
+    my $overall_limit = $r{build_lvextend_max};
+    return unless defined $overall_limit && $overall_limit =~ m/^\d/;
+    my $allow = floor(gb2pe($overall_limit)) - $extended_pes;
+    if ($$pevar > $allow) {
+       logm("applying overall lvextend limit ${overall_limit}G");
+       $$pevar = $allow;
+    }
+    $extended_pes += $$pevar;
+}
+
 sub lvextend_stage1 () {
     $vg=
         $ho->{Suite} =~ m/lenny/
@@ -120,6 +133,7 @@ sub lvextend1 ($$$) {
 
     my $stripes_free = $stripe_count * $stripe_minfree;
     $do_limit_pe->(\$stripes_free, 'striped');
+    overall_limit_pe(\$stripes_free);
     if ($stripe_minfree && $stripe_count>1) {
         $more_pe += $stripes_free;
         target_cmd_root($ho, "lvextend -i$stripe_count -l +$stripes_free $lv");