delete $disk->{format}; # no longer needed
$res->{$ds} = PVE::QemuServer::print_drive($vmid, $disk);
} else {
+
my $path = $rpcenv->check_volume_access($authuser, $storecfg, $vmid, $volid);
- PVE::Storage::activate_volumes($storecfg, [ $volid ])
- if PVE::Storage::parse_volume_id ($volid, 1);
+
+ my ($storeid, $volname) = PVE::Storage::parse_volume_id($volid, 1);
- my ($storeid, $volname) = PVE::Storage::parse_volume_id($volid);
- my $dl = PVE::Storage::vdisk_list($storecfg, $storeid, undef);
my $foundvolid = undef;
- PVE::Storage::foreach_volid($dl, sub {
- my ($volumeid) = @_;
- if($volumeid eq $volid) {
- $foundvolid = 1;
- return;
- }
- });
+ if ($storeid) {
+ PVE::Storage::activate_volumes($storecfg, [ $volid ]);
+ my $dl = PVE::Storage::vdisk_list($storecfg, $storeid, undef);
+
+ PVE::Storage::foreach_volid($dl, sub {
+ my ($volumeid) = @_;
+ if($volumeid eq $volid) {
+ $foundvolid = 1;
+ return;
+ }
+ });
+ }
die "image '$path' does not exists\n" if (!(-f $path || -b $path || $foundvolid));
$res->{$ds} = $settings->{$ds};
&$vmconfig_delete_option($rpcenv, $authuser, $conf, $storecfg, $vmid, $opt, $force);
$conf = PVE::QemuServer::load_config($vmid); # update/reload
}
+
+ if($drive->{bps} != $old_drive->{bps} ||
+ $drive->{bps_rd} != $old_drive->{bps_rd} ||
+ $drive->{bps_wr} != $old_drive->{bps_wr} ||
+ $drive->{iops} != $old_drive->{iops} ||
+ $drive->{iops_rd} != $old_drive->{iops_rd} ||
+ $drive->{iops_wr} != $old_drive->{iops_wr} ) {
+ PVE::QemuServer::qemu_block_set_io_throttle($vmid,"drive-$opt",$drive->{bps}, $drive->{bps_rd}, $drive->{bps_wr}, $drive->{iops}, $drive->{iops_rd}, $drive->{iops_wr}) if !PVE::QemuServer::drive_is_cdrom($drive);
+ }
}
}
# test if VM exists
my $conf = PVE::QemuServer::load_config($param->{vmid});
- my $vmstatus = PVE::QemuServer::vmstatus($param->{vmid});
+ my $vmstatus = PVE::QemuServer::vmstatus($param->{vmid}, 1);
my $status = $vmstatus->{$param->{vmid}};
$status->{ha} = &$vm_is_ha_managed($param->{vmid});
my $res = '';
eval {
- $res = PVE::QemuServer::vm_monitor_command($vmid, $param->{command});
+ $res = PVE::QemuServer::vm_human_monitor_command($vmid, $param->{command});
};
$res = "ERROR: $@" if $@;