mirror of
https://github.com/xcat2/xcat-core.git
synced 2025-05-31 10:06:39 +00:00
-Fix chvm with multiple disks to add
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@6522 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
0373a6671f
commit
ff3e926e69
@ -632,7 +632,7 @@ sub chvm {
|
||||
$ideUnit = getAvailUnit($ideCont->{key},$devices);
|
||||
}
|
||||
unless ($hyphash{$hyp}->{datastoremap}) { validate_datastore_prereqs([],$hyp); }
|
||||
push @devChanges, create_storage_devs($node,$hyphash{$hyp}->{datastoremap},$addSizes,$scsiCont,$scsiUnit,$ideCont,$ideUnit);
|
||||
push @devChanges, create_storage_devs($node,$hyphash{$hyp}->{datastoremap},$addSizes,$scsiCont,$scsiUnit,$ideCont,$ideUnit,$devices);
|
||||
}
|
||||
|
||||
if(%resize) {
|
||||
@ -679,6 +679,19 @@ sub chvm {
|
||||
|
||||
}
|
||||
|
||||
sub getUsedUnits {
|
||||
my $contKey = shift;
|
||||
my $devices = shift;
|
||||
my %usedids;
|
||||
$usedids{7}=1;
|
||||
$usedids{'7'}=1; #TODO: figure out which of these is redundant, the string or the number variant
|
||||
for my $device (@$devices) {
|
||||
if($device->{controllerKey} eq $contKey) {
|
||||
$usedids{$device->{unitNumber}}=1;
|
||||
}
|
||||
}
|
||||
return \%usedids;
|
||||
}
|
||||
sub getAvailUnit {
|
||||
my $contKey = shift;
|
||||
my $devices = shift;
|
||||
@ -1851,6 +1864,7 @@ sub create_storage_devs {
|
||||
my $scsiUnit = shift;
|
||||
my $existingIdeCont = shift;
|
||||
my $ideUnit = shift;
|
||||
my $devices = shift;
|
||||
my $scsicontrollerkey=0;
|
||||
my $idecontrollerkey=200; #IDE 'controllers' exist at 200 and 201 invariably, with no flexibility?
|
||||
#Cannot find documentation that declares this absolute, but attempts to do otherwise
|
||||
@ -1863,14 +1877,18 @@ sub create_storage_devs {
|
||||
my $ideunitnum=0;
|
||||
my $scsiunitnum=0;
|
||||
my $havescsicontroller=0;
|
||||
my %usedideunits;
|
||||
my %usedscsiunits=(7=>1,'7'=>1);
|
||||
if (defined $existingScsiCont) {
|
||||
$havescsicontroller=1;
|
||||
$scsicontrollerkey = $existingScsiCont->{key};
|
||||
$scsiunitnum = $scsiUnit;
|
||||
%usedscsiunits = %{getUsedUnits($scsicontrollerkey,$devices)};
|
||||
}
|
||||
if (defined $existingIdeCont) {
|
||||
$idecontrollerkey = $existingIdeCont->{key};
|
||||
$ideunitnum = $ideUnit;
|
||||
%usedideunits = %{getUsedUnits($idecontrollerkey,$devices)};
|
||||
}
|
||||
my $unitnum;
|
||||
my %disktocont;
|
||||
@ -1913,10 +1931,18 @@ sub create_storage_devs {
|
||||
my $controllerkey;
|
||||
if ($disktype eq 'ide') {
|
||||
$controllerkey = $idecontrollerkey;
|
||||
$unitnum = $ideunitnum++;
|
||||
$unitnum = 0;
|
||||
while ($usedideunits{$unitnum}) {
|
||||
$unitnum++;
|
||||
}
|
||||
$usedideunits{$unitnum}=1;
|
||||
} else {
|
||||
$controllerkey = $scsicontrollerkey;
|
||||
$unitnum = $scsiunitnum++;
|
||||
$unitnum = 0;
|
||||
while ($usedscsiunits{$unitnum}) {
|
||||
$unitnum++;
|
||||
}
|
||||
$usedscsiunits{$unitnum}=1;
|
||||
$havescsidevs=1;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user