[pve-devel] update disk config, always rescan all the storage, can we avoid that ?
Dietmar Maurer
dietmar at proxmox.com
Tue Jun 4 13:26:52 CEST 2013
Can we avoid the useless check by doing something like this:
diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 24b57ad..111c731 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -133,6 +133,15 @@ my $create_disks = sub {
my $foundvolid = undef;
if ($storeid) {
+
+ my $volid_is_new = 1;
+ if ($conf->{$ds}) {
+ my $olddrive = PVE::QemuServer::parse_drive($ds, $conf->{$ds});
+ $volid_is_new = 0 if $olddrive->{file} && $olddrive->{file} eq $volid;
+ }
+
+ # fixme: avoid storage scans if $volid_is_new = 0
+
PVE::Storage::activate_volumes($storecfg, [ $volid ]);
my $dl = PVE::Storage::vdisk_list($storecfg, $storeid, undef);
> > >>Yes. But otherwise $settings does not contain drives, so calling
> > >>creat_disks shoukd have no effect?
> >
> > $settings in never empty, as we update the full disk config.
> >
> > example, to update bandwith limit:
> >
> > qm update --virtio0 local:1/vm-1-disk-1,cache=none,size=10G,mbps_rd=10
>
> ah, got it now - test cases really helps ;-)
>
> but I have no real idea how to implement that cleanly.
>
> Some time ago I though we can simplify the whole vm_update by restricting
> the function to change only a single option (and provide a separate update
> function for each option type), but I am not sure.
More information about the pve-devel
mailing list