mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-08-15 14:24:16 +00:00
use mbps instead of bps
The new parser automatically converts old bps to mbps.
This commit is contained in:
parent
f36ed4f4a0
commit
9bf371a66b
@ -658,7 +658,7 @@ my $vmconfig_delete_option = sub {
|
|||||||
PVE::QemuServer::update_config_nolock($vmid, $conf, 1);
|
PVE::QemuServer::update_config_nolock($vmid, $conf, 1);
|
||||||
};
|
};
|
||||||
|
|
||||||
my $safe_int_ne = sub {
|
my $safe_num_ne = sub {
|
||||||
my ($a, $b) = @_;
|
my ($a, $b) = @_;
|
||||||
|
|
||||||
return 0 if !defined($a) && !defined($b);
|
return 0 if !defined($a) && !defined($b);
|
||||||
@ -694,13 +694,16 @@ my $vmconfig_update_disk = sub {
|
|||||||
$conf = PVE::QemuServer::load_config($vmid); # update/reload
|
$conf = PVE::QemuServer::load_config($vmid); # update/reload
|
||||||
}
|
}
|
||||||
|
|
||||||
if(&$safe_int_ne($drive->{bps}, $old_drive->{bps}) ||
|
if(&$safe_num_ne($drive->{mbps}, $old_drive->{mbps}) ||
|
||||||
&$safe_int_ne($drive->{bps_rd}, $old_drive->{bps_rd}) ||
|
&$safe_num_ne($drive->{mbps_rd}, $old_drive->{mbps_rd}) ||
|
||||||
&$safe_int_ne($drive->{bps_wr}, $old_drive->{bps_wr}) ||
|
&$safe_num_ne($drive->{mbps_wr}, $old_drive->{mbps_wr}) ||
|
||||||
&$safe_int_ne($drive->{iops}, $old_drive->{iops}) ||
|
&$safe_num_ne($drive->{iops}, $old_drive->{iops}) ||
|
||||||
&$safe_int_ne($drive->{iops_rd}, $old_drive->{iops_rd}) ||
|
&$safe_num_ne($drive->{iops_rd}, $old_drive->{iops_rd}) ||
|
||||||
&$safe_int_ne($drive->{iops_wr}, $old_drive->{iops_wr})) {
|
&$safe_num_ne($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);
|
PVE::QemuServer::qemu_block_set_io_throttle($vmid,"drive-$opt", $drive->{mbps}*1024*1024,
|
||||||
|
$drive->{mbps_rd}*1024*1024, $drive->{mbps_wr}*1024*1024,
|
||||||
|
$drive->{iops}, $drive->{iops_rd}, $drive->{iops_wr})
|
||||||
|
if !PVE::QemuServer::drive_is_cdrom($drive);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -777,7 +777,7 @@ sub create_conf_nolock {
|
|||||||
my $parse_size = sub {
|
my $parse_size = sub {
|
||||||
my ($value) = @_;
|
my ($value) = @_;
|
||||||
|
|
||||||
return undef if $value !~ m/^([1-9]\d*(\.\d+)?)([KMG])?$/;
|
return undef if $value !~ m/^(\d+(\.\d+)?)([KMG])?$/;
|
||||||
my ($size, $unit) = ($1, $3);
|
my ($size, $unit) = ($1, $3);
|
||||||
if ($unit) {
|
if ($unit) {
|
||||||
if ($unit eq 'K') {
|
if ($unit eq 'K') {
|
||||||
@ -832,13 +832,18 @@ sub parse_drive {
|
|||||||
foreach my $p (split (/,/, $data)) {
|
foreach my $p (split (/,/, $data)) {
|
||||||
next if $p =~ m/^\s*$/;
|
next if $p =~ m/^\s*$/;
|
||||||
|
|
||||||
if ($p =~ m/^(file|volume|cyls|heads|secs|trans|media|snapshot|cache|format|rerror|werror|backup|aio|bps|bps_rd|bps_wr|iops|iops_rd|iops_wr|size)=(.+)$/) {
|
if ($p =~ m/^(file|volume|cyls|heads|secs|trans|media|snapshot|cache|format|rerror|werror|backup|aio|bps|mbps|bps_rd|mbps_rd|bps_wr|mbps_wr|iops|iops_rd|iops_wr|size)=(.+)$/) {
|
||||||
my ($k, $v) = ($1, $2);
|
my ($k, $v) = ($1, $2);
|
||||||
|
|
||||||
$k = 'file' if $k eq 'volume';
|
$k = 'file' if $k eq 'volume';
|
||||||
|
|
||||||
return undef if defined $res->{$k};
|
return undef if defined $res->{$k};
|
||||||
|
|
||||||
|
if ($k eq 'bps' || $k eq 'bps_rd' || $k eq 'bps_wr') {
|
||||||
|
return undef if !$v || $v !~ m/^\d+/;
|
||||||
|
$k = "m$k";
|
||||||
|
$v = sprintf("%.3f", $v / (1024*1024));
|
||||||
|
}
|
||||||
$res->{$k} = $v;
|
$res->{$k} = $v;
|
||||||
} else {
|
} else {
|
||||||
if (!$res->{file} && $p !~ m/=/) {
|
if (!$res->{file} && $p !~ m/=/) {
|
||||||
@ -865,14 +870,16 @@ sub parse_drive {
|
|||||||
return undef if $res->{backup} && $res->{backup} !~ m/^(yes|no)$/;
|
return undef if $res->{backup} && $res->{backup} !~ m/^(yes|no)$/;
|
||||||
return undef if $res->{aio} && $res->{aio} !~ m/^(native|threads)$/;
|
return undef if $res->{aio} && $res->{aio} !~ m/^(native|threads)$/;
|
||||||
|
|
||||||
return undef if $res->{bps_rd} && $res->{bps};
|
|
||||||
return undef if $res->{bps_wr} && $res->{bps};
|
return undef if $res->{mbps_rd} && $res->{mbps};
|
||||||
|
return undef if $res->{mbps_wr} && $res->{mbps};
|
||||||
|
|
||||||
|
return undef if $res->{mbps} && $res->{mbps} !~ m/^\d+(\.\d+)?$/;
|
||||||
|
return undef if $res->{mbps_rd} && $res->{mbps_rd} !~ m/^\d+(\.\d+)?$/;
|
||||||
|
return undef if $res->{mbps_wr} && $res->{mbps_wr} !~ m/^\d+(\.\d+)?$/;
|
||||||
|
|
||||||
return undef if $res->{iops_rd} && $res->{iops};
|
return undef if $res->{iops_rd} && $res->{iops};
|
||||||
return undef if $res->{iops_wr} && $res->{iops};
|
return undef if $res->{iops_wr} && $res->{iops};
|
||||||
|
|
||||||
return undef if $res->{bps} && $res->{bps} !~ m/^\d+$/;
|
|
||||||
return undef if $res->{bps_rd} && $res->{bps_rd} !~ m/^\d+$/;
|
|
||||||
return undef if $res->{bps_wr} && $res->{bps_wr} !~ m/^\d+$/;
|
|
||||||
return undef if $res->{iops} && $res->{iops} !~ m/^\d+$/;
|
return undef if $res->{iops} && $res->{iops} !~ m/^\d+$/;
|
||||||
return undef if $res->{iops_rd} && $res->{iops_rd} !~ m/^\d+$/;
|
return undef if $res->{iops_rd} && $res->{iops_rd} !~ m/^\d+$/;
|
||||||
return undef if $res->{iops_wr} && $res->{iops_wr} !~ m/^\d+$/;
|
return undef if $res->{iops_wr} && $res->{iops_wr} !~ m/^\d+$/;
|
||||||
@ -896,13 +903,13 @@ sub parse_drive {
|
|||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
my @qemu_drive_options = qw(heads secs cyls trans media format cache snapshot rerror werror aio bps bps_rd bps_wr iops iops_rd iops_wr);
|
my @qemu_drive_options = qw(heads secs cyls trans media format cache snapshot rerror werror aio iops iops_rd iops_wr);
|
||||||
|
|
||||||
sub print_drive {
|
sub print_drive {
|
||||||
my ($vmid, $drive) = @_;
|
my ($vmid, $drive) = @_;
|
||||||
|
|
||||||
my $opts = '';
|
my $opts = '';
|
||||||
foreach my $o (@qemu_drive_options, 'backup') {
|
foreach my $o (@qemu_drive_options, 'mbps', 'mbps_rd', 'mbps_wr', 'backup') {
|
||||||
$opts .= ",$o=$drive->{$o}" if $drive->{$o};
|
$opts .= ",$o=$drive->{$o}" if $drive->{$o};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1041,6 +1048,11 @@ sub print_drive_full {
|
|||||||
$opts .= ",$o=$drive->{$o}" if $drive->{$o};
|
$opts .= ",$o=$drive->{$o}" if $drive->{$o};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach my $o (qw(bps bps_rd bps_wr)) {
|
||||||
|
my $v = $drive->{"m$o"};
|
||||||
|
$opts .= ",$o=" . int($v*1024*1024) if $v;
|
||||||
|
}
|
||||||
|
|
||||||
# use linux-aio by default (qemu default is threads)
|
# use linux-aio by default (qemu default is threads)
|
||||||
$opts .= ",aio=native" if !$drive->{aio};
|
$opts .= ",aio=native" if !$drive->{aio};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user