[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