From d36e947c5d5c17d548c96712bb04f1e6d21f7fc8 Mon Sep 17 00:00:00 2001 From: jbjohnso Date: Tue, 8 Jun 2010 21:07:19 +0000 Subject: [PATCH] -Select first available unit number rather than highest, to fill in gaps left by old devices being removed git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@6402 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- xCAT-server/lib/xcat/plugins/esx.pm | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/xCAT-server/lib/xcat/plugins/esx.pm b/xCAT-server/lib/xcat/plugins/esx.pm index 6567152aa..e528e0f74 100644 --- a/xCAT-server/lib/xcat/plugins/esx.pm +++ b/xCAT-server/lib/xcat/plugins/esx.pm @@ -606,10 +606,10 @@ sub chvm { } } if($scsiCont) { - $scsiUnit = getHighestUnit($scsiCont->{key},$devices); + $scsiUnit = getAvailUnit($scsiCont->{key},$devices); } if($ideCont) { - $ideUnit = getHighestUnit($ideCont->{key},$devices); + $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); @@ -659,15 +659,21 @@ sub chvm { } -sub getHighestUnit { +sub getAvailUnit { my $contKey = shift; my $devices = shift; - my $highestUnit = 0; + 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) && ($device->{unitNumber} >= $highestUnit)) { - $highestUnit = $device->{unitNumber}+1; + if($device->{controllerKey} eq $contKey) { + $usedids{$device->{unitNumber}}=1; } } + my $highestUnit=0; + while ($usedids{$highestUnit}) { + $highestUnit++; + } return $highestUnit; }