rbd: unmap volume after rename
When krbd is used, subsequent removal after an an operation involving a rename could fail with > librbd::image::PreRemoveRequest: 0x559b7506a470 \ > check_image_watchers: image has watchers - not removing because the old mapping was still present. For both operations with a rename, the owning guest should be offline, but even if it weren't, unmap simply fails when the volume is in-use. Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
committed by
Thomas Lamprecht
parent
cc682faafc
commit
9594717848
@ -482,6 +482,9 @@ sub create_base {
|
|||||||
);
|
);
|
||||||
run_rbd_command($cmd, errmsg => "rbd rename '$name' error");
|
run_rbd_command($cmd, errmsg => "rbd rename '$name' error");
|
||||||
|
|
||||||
|
eval { $class->unmap_volume($storeid, $scfg, $volname); };
|
||||||
|
warn $@ if $@;
|
||||||
|
|
||||||
my $running = undef; #fixme : is create_base always offline ?
|
my $running = undef; #fixme : is create_base always offline ?
|
||||||
|
|
||||||
$class->volume_snapshot($scfg, $storeid, $newname, $snap, $running);
|
$class->volume_snapshot($scfg, $storeid, $newname, $snap, $running);
|
||||||
@ -817,6 +820,9 @@ sub rename_volume {
|
|||||||
errmsg => "could not rename image '${source_image}' to '${target_volname}'",
|
errmsg => "could not rename image '${source_image}' to '${target_volname}'",
|
||||||
);
|
);
|
||||||
|
|
||||||
|
eval { $class->unmap_volume($storeid, $scfg, $source_volname); };
|
||||||
|
warn $@ if $@;
|
||||||
|
|
||||||
$base_name = $base_name ? "${base_name}/" : '';
|
$base_name = $base_name ? "${base_name}/" : '';
|
||||||
|
|
||||||
return "${storeid}:${base_name}${target_volname}";
|
return "${storeid}:${base_name}${target_volname}";
|
||||||
|
|||||||
Reference in New Issue
Block a user