mirror of
https://github.com/ceph/ceph
synced 2025-02-19 17:08:05 +00:00
librbd: Fixed bug in disabling non-primary image mirroring
It is only possible to remove image from rbd_mirroring object if the mirroring image state is set to DISABLING. Signed-off-by: Ricardo Dias <rdias@suse.com>
This commit is contained in:
parent
0913938d41
commit
b6d8c32ae8
@ -312,13 +312,10 @@ int mirror_image_disable_internal(ImageCtx *ictx, bool force) {
|
||||
return r;
|
||||
}
|
||||
|
||||
if (!is_primary) {
|
||||
if (!force) {
|
||||
lderr(cct) << "Mirrored image is not the primary, add force option to"
|
||||
" disable mirroring" << dendl;
|
||||
return -EINVAL;
|
||||
}
|
||||
goto remove_mirroring_image;
|
||||
if (!is_primary && !force) {
|
||||
lderr(cct) << "Mirrored image is not the primary, add force option to"
|
||||
" disable mirroring" << dendl;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
mirror_image_internal.state = cls::rbd::MIRROR_IMAGE_STATE_DISABLING;
|
||||
@ -329,6 +326,10 @@ int mirror_image_disable_internal(ImageCtx *ictx, bool force) {
|
||||
return r;
|
||||
}
|
||||
|
||||
if (!is_primary) {
|
||||
goto remove_mirroring_image;
|
||||
}
|
||||
|
||||
r = MirroringWatcher<>::notify_image_updated(
|
||||
ictx->md_ctx, cls::rbd::MIRROR_IMAGE_STATE_DISABLING,
|
||||
ictx->id, mirror_image_internal.global_image_id);
|
||||
|
Loading…
Reference in New Issue
Block a user