mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-05-02 17:20:30 +00:00
fix #1569: add shared flag to disks
With shared=1, (live) migration ignores the disk and assumes it is present on all target nodes. This works similar to shared=1 on LXC mountpoints. Signed-off-by: Chris Hofstaedtler <chris.hofstaedtler@deduktiva.com> Reviewed-by: Thomas Lamprecht <t.lamprecht@proxmox.com> Tested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
bfb04cfc01
commit
ec82e3eee4
@ -318,6 +318,7 @@ sub sync_disks {
|
||||
my ($volid, $attr) = @_;
|
||||
|
||||
if ($volid =~ m|^/|) {
|
||||
return if $attr->{shared};
|
||||
$local_volumes->{$volid}->{ref} = 'config';
|
||||
die "local file/device\n";
|
||||
}
|
||||
|
@ -819,6 +819,13 @@ my %drivedesc_base = (
|
||||
maxLength => 20*3, # *3 since it's %xx url enoded
|
||||
description => "The drive's reported serial number, url-encoded, up to 20 bytes long.",
|
||||
optional => 1,
|
||||
},
|
||||
shared => {
|
||||
type => 'boolean',
|
||||
description => 'Mark this locally-managed volume as available on all nodes',
|
||||
verbose_description => "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!",
|
||||
optional => 1,
|
||||
default => 0,
|
||||
}
|
||||
);
|
||||
|
||||
@ -2837,7 +2844,7 @@ sub foreach_volid {
|
||||
my $volhash = {};
|
||||
|
||||
my $test_volid = sub {
|
||||
my ($volid, $is_cdrom, $replicate, $snapname) = @_;
|
||||
my ($volid, $is_cdrom, $replicate, $shared, $snapname) = @_;
|
||||
|
||||
return if !$volid;
|
||||
|
||||
@ -2847,6 +2854,9 @@ sub foreach_volid {
|
||||
$volhash->{$volid}->{replicate} //= 0;
|
||||
$volhash->{$volid}->{replicate} = 1 if $replicate;
|
||||
|
||||
$volhash->{$volid}->{shared} //= 0;
|
||||
$volhash->{$volid}->{shared} = 1 if $shared;
|
||||
|
||||
$volhash->{$volid}->{referenced_in_config} //= 0;
|
||||
$volhash->{$volid}->{referenced_in_config} = 1 if !defined($snapname);
|
||||
|
||||
@ -2856,7 +2866,7 @@ sub foreach_volid {
|
||||
|
||||
foreach_drive($conf, sub {
|
||||
my ($ds, $drive) = @_;
|
||||
$test_volid->($drive->{file}, drive_is_cdrom($drive), $drive->{replicate} // 1, undef);
|
||||
$test_volid->($drive->{file}, drive_is_cdrom($drive), $drive->{replicate} // 1, $drive->{shared}, undef);
|
||||
});
|
||||
|
||||
foreach my $snapname (keys %{$conf->{snapshots}}) {
|
||||
@ -2864,7 +2874,7 @@ sub foreach_volid {
|
||||
$test_volid->($snap->{vmstate}, 0, 1, $snapname);
|
||||
foreach_drive($snap, sub {
|
||||
my ($ds, $drive) = @_;
|
||||
$test_volid->($drive->{file}, drive_is_cdrom($drive), $drive->{replicate} // 1, $snapname);
|
||||
$test_volid->($drive->{file}, drive_is_cdrom($drive), $drive->{replicate} // 1, $drive->{shared}, $snapname);
|
||||
});
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user