From: Aaron Lauterer <a.lauterer@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH v4 qemu-server 5/12] migration: add target_storage_check_available
Date: Fri, 16 Jun 2023 11:57:01 +0200 [thread overview]
Message-ID: <20230616095708.1323621-6-a.lauterer@proxmox.com> (raw)
In-Reply-To: <20230616095708.1323621-1-a.lauterer@proxmox.com>
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@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
next prev parent reply other threads:[~2023-06-16 9:57 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-16 9:56 [pve-devel] [PATCH v4 qemu-server, container, docs 0/12] migration: don't scan all storages, fail on aliases Aaron Lauterer
2023-06-16 9:56 ` [pve-devel] [PATCH v4 qemu-server 1/12] migration: only migrate disks used by the guest Aaron Lauterer
2023-06-16 12:16 ` Fiona Ebner
2023-06-16 9:56 ` [pve-devel] [PATCH v4 qemu-server 2/12] qemuserver: foreach_volid: include pending volumes Aaron Lauterer
2023-06-16 12:25 ` Fiona Ebner
2023-06-16 12:37 ` Thomas Lamprecht
2023-06-16 9:56 ` [pve-devel] [PATCH v4 qemu-server 3/12] qemuserver: foreach_volid: always include pending disks Aaron Lauterer
2023-06-16 9:57 ` [pve-devel] [PATCH v4 qemu-server 4/12] qemuserver: foreach_volid: test regular config last Aaron Lauterer
2023-06-16 12:40 ` Fiona Ebner
2023-06-16 14:36 ` Aaron Lauterer
2023-06-16 9:57 ` Aaron Lauterer [this message]
2023-06-16 13:11 ` [pve-devel] applied: [PATCH v4 qemu-server 5/12] migration: add target_storage_check_available Fiona Ebner
2023-06-16 9:57 ` [pve-devel] [PATCH v4 qemu-server 6/12] migration: scan_local_volumes: adapt refs handling Aaron Lauterer
2023-06-16 9:57 ` [pve-devel] [PATCH v4 qemu-server 7/12] tests: add migration test for pending disk Aaron Lauterer
2023-06-16 9:57 ` [pve-devel] [PATCH v4 qemu-server 8/12] migration: fail when aliased volume is detected Aaron Lauterer
2023-06-16 9:57 ` [pve-devel] [PATCH v4 qemu-server 9/12] tests: add migration alias check Aaron Lauterer
2023-06-16 9:57 ` [pve-devel] [PATCH v4 container 10/12] migration: only migrate volumes used by the guest Aaron Lauterer
2023-06-16 13:58 ` Fiona Ebner
2023-06-16 9:57 ` [pve-devel] [PATCH v4 container 11/12] migration: fail when aliased volume is detected Aaron Lauterer
2023-06-16 9:57 ` [pve-devel] [PATCH v4 docs 12/12] storage: add hint to avoid storage aliasing Aaron Lauterer
2023-06-16 14:12 ` [pve-devel] [PATCH v4 qemu-server, container, docs 0/12] migration: don't scan all storages, fail on aliases Fiona Ebner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230616095708.1323621-6-a.lauterer@proxmox.com \
--to=a.lauterer@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox