add print_drivedevice_full sub for disk -device syntax

Signed-off-by: Derumier Alexandre <aderumier@odiso.com>
This commit is contained in:
Derumier Alexandre 2011-09-07 15:34:38 +02:00 committed by Dietmar Maurer
parent 3ebfcc8613
commit ca916eccfb

View File

@ -843,6 +843,42 @@ sub print_drive {
return "$drive->{file}$opts";
}
sub print_drivedevice_full {
my ($storecfg, $vmid, $drive) = @_;
my $device = '';
my $maxdev = 0;
if ($drive->{interface} eq 'virtio') {
$device="virtio-blk-pci,drive=drive-$drive->{interface}$drive->{index},id=device-$drive->{interface}$drive->{index}";
}
elsif ($drive->{interface} eq 'scsi') {
$maxdev = 7;
my $controller = int ($drive->{index} / $maxdev);
my $unit = $drive->{index} % $maxdev;
$device="scsi-disk,bus=scsi$controller.0,scsi-id=$unit,drive=drive-$drive->{interface}$drive->{index},id=device-$drive->{interface}$drive->{index}";
}
elsif ($drive->{interface} eq 'ide'){
$maxdev = 2;
my $controller = int ($drive->{index} / $maxdev);
my $unit = $drive->{index} % $maxdev;
$device="ide-drive,bus=ide.$controller,unit=$unit,drive=drive-$drive->{interface}$drive->{index},id=device-$drive->{interface}$drive->{index}";
}
if ($drive->{interface} eq 'usb'){
# -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0
}
return $device;
}
sub print_drive_full {
my ($storecfg, $vmid, $drive) = @_;
@ -2005,6 +2041,7 @@ sub config_to_command {
my $tmp = print_drive_full ($storecfg, $vmid, $drive);
$tmp .= ",boot=on" if $conf->{bootdisk} && ($conf->{bootdisk} eq $ds);
push @$cmd, '-drive', $tmp;
push @$cmd, '-device',print_drivedevice_full ($storecfg,$vmid, $drive);
});
push @$cmd, '-m', $conf->{memory} || $defaults->{memory};