Am 09.11.21 um 13:46 schrieb Fabian Ebner:
Am 05.11.21 um 14:03 schrieb Fabian Grünbichler:
---snip---
use IO::Socket::IP;
+use IO::Socket::UNIX;
+use IPC::Open3;
+use JSON;
+use MIME::Base64;
Forgot to ask: is this import needed or a left-over from development?
---snip---
+
+ my $migration_snapshot;
+ if ($scfg->{type} eq 'zfspool' || $scfg->{type} eq
'btrfs') {
+ $migration_snapshot = '__migration__';
+ }
+
+ my $volid = "$storeid:$volname";
+
+ # find common import/export format, taken from PVE::Storage
+ my @import_formats =
PVE::Storage::volume_import_formats($state->{storecfg}, $volid,
$migration_snapshot, undef, $with_snapshots);
+ my @export_formats =
PVE::Tools::split_list($params->{'export-formats'});
+ my %import_hash = map { $_ => 1 } @import_formats;
+ my @common = grep { $import_hash{$_} } @export_formats;
+ die "no matching import/export format found for storage
'$storeid'\n"
+ if !@common;
+ $format = $common[0];
+
+ my $input = IO::File->new();
+ my $info = IO::File->new();
+ my $unix = "/run/qemu-server/$vmid.storage";
+
+ my $import_cmd = ['pvesm', 'import', $volid, $format,
"unix://$unix", '-with-snapshots', $with_snapshots];
+ if ($params->{'allow-rename'}) {
+ push @$import_cmd, '-allow-rename',
$params->{'allow-rename'};
+ }
+ if ($migration_snapshot) {
+ push @$import_cmd, '-delete-snapshot', $migration_snapshot;
Missing '-snapshot $migration_snapshot'? While the parameter is ignored
by our ZFSPoolPlugin, the BTRFSPlugin aborts if it's not specified
AFAICS. And external plugins might require it too.
That is, for the 'btrfs' format. In the patch with the export command, a
snapshot is only used for ZFS, so it would already fail on export for
BTRFS with 'btrfs' format. For external plugins we also don't use a
migration snapshot in storage_migrate(), so please disregard that part.
In general, we'll need to be careful not to introduce mismatches between
the import and the export parameters. Might it be better if the client
would pass along (most of) the parameters for the import command (which
basically is how it's done for the existing storage_migrate)?
On the other hand, that would require being very careful with input
validation.
---snip---
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel