5
0
mirror of git://git.proxmox.com/git/qemu-server.git synced 2025-01-10 01:18:01 +03:00

create_disks: refactor out and improve efidisk creation

factor out code in a new create_efidisk submethod, as else this code
is hardly readable as the efidisk0 case is a special case. Refer from
putting all this specialised handling directly to the much shorter
code for all other cases.

Also the disk was created with a specific format and then a format
detection on the newly created disk was done, which is pretty
useless, clear that up.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2017-09-11 08:40:28 +02:00 committed by Wolfgang Bumiller
parent a1d8c038c5
commit 3e1f112286
2 changed files with 19 additions and 18 deletions

View File

@ -144,24 +144,7 @@ my $create_disks = sub {
my $volid;
if ($ds eq 'efidisk0') {
# handle efidisk
my $ovmfvars = '/usr/share/kvm/OVMF_VARS-pure-efi.fd';
die "uefi vars image not found\n" if ! -f $ovmfvars;
$size = PVE::Tools::convert_size(-s $ovmfvars, 'b' => 'kb');
$volid = PVE::Storage::vdisk_alloc($storecfg, $storeid, $vmid, $fmt, undef, $size);
my ($storeid, $volname) = PVE::Storage::parse_volume_id($volid);
my $scfg = PVE::Storage::storage_config($storecfg, $storeid);
my $qemufmt = PVE::QemuServer::qemu_img_format($scfg, $volname);
my $path = PVE::Storage::path($storecfg, $volid);
my $efidiskcmd = ['/usr/bin/qemu-img', 'convert', '-n', '-f', 'raw', '-O', $qemufmt];
push @$efidiskcmd, $ovmfvars;
push @$efidiskcmd, $path;
PVE::Storage::activate_volumes($storecfg, [$volid]);
eval { PVE::Tools::run_command($efidiskcmd); };
my $err = $@;
die "Copying of EFI Vars image failed: $err" if $err;
($volid, $size) = PVE::QemuServer::create_efidisk($storecfg, $storeid, $vmid, $fmt);
} else {
$volid = PVE::Storage::vdisk_alloc($storecfg, $storeid, $vmid, $fmt, undef, $size);
}

View File

@ -6309,6 +6309,24 @@ sub qemu_use_old_bios_files {
return ($use_old_bios_files, $machine_type);
}
sub create_efidisk {
my ($storecfg, $storeid, $vmid, $fmt) = @_;
die "EFI vars default image not found\n" if ! -f $OVMF_VARS;
my $vars_size = PVE::Tools::convert_size(-s $OVMF_VARS, 'b' => 'kb');
my $volid = PVE::Storage::vdisk_alloc($storecfg, $storeid, $vmid, $fmt, undef, $vars_size);
PVE::Storage::activate_volumes($storecfg, [$volid]);
my $path = PVE::Storage::path($storecfg, $volid);
eval {
run_command(['/usr/bin/qemu-img', 'convert', '-n', '-f', 'raw', '-O', $fmt, $OVMF_VARS, $path]);
};
die "Copying EFI vars image failed: $@" if $@;
return ($volid, $vars_size);
}
sub lspci {
my $devices = {};