vdisk list: only collect images from storages with an appropriate content type
Only these storages are activated in the first place, and it's bad behavior to list images when no appropriate content type is not set. For example, on VM destruction, this avoids unreferenced images to be deleted from a storage with only 'backup' content type set, which is supposedly what happened in this[0] forum thread. (Some) callers expect all keys to be present and valid array references in the result, so initialization is needed. Now, the enabled check is already done by the preceding code for every element that is iterated over, and thus isn't needed in the main loop anymore. [0]: https://forum.proxmox.com/threads/erasing-all-vm-disks-after-a-failed-vm-migration-task.85068 Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
committed by
Thomas Lamprecht
parent
1d6c548889
commit
a44c18925d
@ -938,7 +938,7 @@ sub vdisk_list {
|
||||
|
||||
storage_check_enabled($cfg, $storeid) if ($storeid);
|
||||
|
||||
my $res = {};
|
||||
my $res = { map { $_ => [] } keys %{$ids} };
|
||||
|
||||
# prepare/activate/refresh all storages
|
||||
|
||||
@ -964,9 +964,8 @@ sub vdisk_list {
|
||||
|
||||
activate_storage_list($cfg, $storage_list, $cache);
|
||||
|
||||
foreach my $sid (keys %$ids) {
|
||||
foreach my $sid (@{$storage_list}) {
|
||||
next if $storeid && $storeid ne $sid;
|
||||
next if !storage_check_enabled($cfg, $sid, undef, 1);
|
||||
|
||||
my $scfg = $ids->{$sid};
|
||||
my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
|
||||
|
||||
Reference in New Issue
Block a user