[pve-devel] [PATCH v4 qemu-server 5/12] migration: add target_storage_check_available
Aaron Lauterer
a.lauterer at proxmox.com
Fri Jun 16 11:57:01 CEST 2023
We use this in a few places. By factoring it into its own function, we
can avoid running slightly different checks in various places.
Signed-off-by: Aaron Lauterer <a.lauterer at proxmox.com>
---
changes since v3: added as its own dedicated patch for a better git
history
PVE/QemuMigrate.pm | 37 +++++++++++++++++++------------------
1 file changed, 19 insertions(+), 18 deletions(-)
diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index 5f4f402..5f61bcd 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -149,6 +149,22 @@ sub lock_vm {
return PVE::QemuConfig->lock_config($vmid, $code, @param);
}
+sub target_storage_check_available {
+ my ($self, $storecfg, $targetsid, $volid) = @_;
+
+ if (!$self->{opts}->{remote}) {
+ # check if storage is available on target node
+ my $target_scfg = PVE::Storage::storage_check_enabled(
+ $storecfg,
+ $targetsid,
+ $self->{node},
+ );
+ my ($vtype) = PVE::Storage::parse_volname($storecfg, $volid);
+ die "$volid: content type '$vtype' is not available on storage '$targetsid'\n"
+ if !$target_scfg->{content}->{$vtype};
+ }
+}
+
sub prepare {
my ($self, $vmid) = @_;
@@ -236,18 +252,7 @@ sub prepare {
$storages->{$targetsid} = 1;
- if (!$self->{opts}->{remote}) {
- # check if storage is available on target node
- my $target_scfg = PVE::Storage::storage_check_enabled(
- $storecfg,
- $targetsid,
- $self->{node},
- );
- my ($vtype) = PVE::Storage::parse_volname($storecfg, $volid);
-
- die "$volid: content type '$vtype' is not available on storage '$targetsid'\n"
- if !$target_scfg->{content}->{$vtype};
- }
+ $self->target_storage_check_available($storecfg, $targetsid, $volid);
if ($scfg->{shared}) {
# PVE::Storage::activate_storage checks this for non-shared storages
@@ -353,12 +358,8 @@ sub scan_local_volumes {
$targetsid = PVE::JSONSchema::map_id($self->{opts}->{storagemap}, $sid);
}
- # check target storage on target node if intra-cluster migration
- if (!$self->{opts}->{remote}) {
- PVE::Storage::storage_check_enabled($storecfg, $targetsid, $self->{node});
-
- return if $scfg->{shared};
- }
+ $self->target_storage_check_available($storecfg, $targetsid, $volid);
+ return if $scfg->{shared} && !$self->{opts}->{remote};
$local_volumes->{$volid}->{ref} = $attr->{referenced_in_config} ? 'config' : 'snapshot';
$local_volumes->{$volid}->{ref} = 'storage' if $attr->{is_unused};
--
2.39.2
More information about the pve-devel
mailing list