storage: add volume_support_qemu_snapshot
Returns if the volume is supporting qemu snapshot: 'internal' : do the snapshot with qemu internal snapshot 'external' : do the snapshot with qemu external snapshot undef : does not support qemu snapshot Signed-off-by: Alexandre Derumier <alexandre.derumier@groupe-cyllene.com>
This commit is contained in:
committed by
Wolfgang Bumiller
parent
5f916079ea
commit
a8d8bdf9ef
@ -29,6 +29,14 @@ Future changes should be documented in here.
|
|||||||
* Introduce rename_snapshot() plugin method
|
* Introduce rename_snapshot() plugin method
|
||||||
This method allow to rename a vm disk snapshot name to a different snapshot name.
|
This method allow to rename a vm disk snapshot name to a different snapshot name.
|
||||||
|
|
||||||
|
* Introduce volume_support_qemu_snapshot() plugin method
|
||||||
|
This method is used to known if the a snapshot need to be done by qemu
|
||||||
|
or by the storage api.
|
||||||
|
returned values are :
|
||||||
|
'internal' : support snapshot with qemu internal snapshot
|
||||||
|
'external' : support snapshot with qemu external snapshot
|
||||||
|
undef : don't support qemu snapshot
|
||||||
|
|
||||||
## Version 11:
|
## Version 11:
|
||||||
|
|
||||||
* Allow declaring storage features via plugin data
|
* Allow declaring storage features via plugin data
|
||||||
|
|||||||
@ -2370,6 +2370,21 @@ sub rename_snapshot {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_support_qemu_snapshot {
|
||||||
|
my ($cfg, $volid) = @_;
|
||||||
|
|
||||||
|
my ($storeid, $volname) = parse_volume_id($volid, 1);
|
||||||
|
|
||||||
|
if ($storeid) {
|
||||||
|
my $scfg = storage_config($cfg, $storeid);
|
||||||
|
|
||||||
|
my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
|
||||||
|
|
||||||
|
return $plugin->volume_support_qemu_snapshot($storeid, $scfg, $volname);
|
||||||
|
}
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
# Various io-heavy operations require io/bandwidth limits which can be
|
# Various io-heavy operations require io/bandwidth limits which can be
|
||||||
# configured on multiple levels: The global defaults in datacenter.cfg, and
|
# configured on multiple levels: The global defaults in datacenter.cfg, and
|
||||||
# per-storage overrides. When we want to do a restore from storage A to storage
|
# per-storage overrides. When we want to do a restore from storage A to storage
|
||||||
|
|||||||
@ -314,4 +314,14 @@ sub get_import_metadata {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_support_qemu_snapshot {
|
||||||
|
my ($class, $storeid, $scfg, $volname) = @_;
|
||||||
|
|
||||||
|
my $format = ($class->parse_volname($volname))[6];
|
||||||
|
return if $format ne 'qcow2';
|
||||||
|
|
||||||
|
my $type = $scfg->{'external-snapshots'} ? 'external' : 'internal';
|
||||||
|
return $type;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
@ -872,4 +872,11 @@ sub rename_snapshot {
|
|||||||
die "rename_snapshot is not implemented for $class";
|
die "rename_snapshot is not implemented for $class";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_support_qemu_snapshot {
|
||||||
|
my ($class, $storeid, $scfg, $volname) = @_;
|
||||||
|
|
||||||
|
my $format = ($class->parse_volname($volname))[6];
|
||||||
|
return 'external' if $format eq 'qcow2';
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
@ -2262,6 +2262,26 @@ sub new_backup_provider {
|
|||||||
die "implement me if enabling the feature 'backup-provider' in plugindata()->{features}\n";
|
die "implement me if enabling the feature 'backup-provider' in plugindata()->{features}\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=head3 volume_support_qemu_snapshot
|
||||||
|
|
||||||
|
$blockdev = $plugin->volume_support_qemu_snapshot($storeid, $scfg, $volname)
|
||||||
|
|
||||||
|
Returns a string with the type of snapshot that qemu can do for a specific volume
|
||||||
|
|
||||||
|
'internal' : support snapshot with qemu internal snapshot
|
||||||
|
'external' : support snapshot with qemu external snapshot
|
||||||
|
undef : don't support qemu snapshot
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub volume_support_qemu_snapshot {
|
||||||
|
my ($class, $storeid, $scfg, $volname) = @_;
|
||||||
|
|
||||||
|
my $format = ($class->parse_volname($volname))[6];
|
||||||
|
return 'internal' if $format eq 'qcow2';
|
||||||
|
}
|
||||||
|
|
||||||
sub config_aware_base_mkdir {
|
sub config_aware_base_mkdir {
|
||||||
my ($class, $scfg, $path) = @_;
|
my ($class, $scfg, $path) = @_;
|
||||||
|
|
||||||
|
|||||||
@ -1063,4 +1063,10 @@ sub rename_snapshot {
|
|||||||
die "rename_snapshot is not implemented for $class";
|
die "rename_snapshot is not implemented for $class";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_support_qemu_snapshot {
|
||||||
|
my ($class, $storeid, $scfg, $volname) = @_;
|
||||||
|
|
||||||
|
return 'internal' if !$scfg->{krbd};
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
Reference in New Issue
Block a user