mirror of
https://github.com/ceph/ceph
synced 2025-03-19 17:06:24 +00:00
librbd: avoid throwing error if mirroring is unsupported
Attempting to remove an image will remove the image from the mirroring directory. However, if the OSD is older and doesn't support this new feature, avoid throwing an error. Signed-off-by: Jason Dillaman <dillaman@redhat.com>
This commit is contained in:
parent
1f3aad6b10
commit
3dd5249b6a
@ -291,14 +291,17 @@ int mirror_image_disable_internal(ImageCtx *ictx, bool force) {
|
||||
|
||||
int r = cls_client::mirror_image_get(&ictx->md_ctx, ictx->id,
|
||||
&mirror_image_internal);
|
||||
if (r < 0 && r != -ENOENT) {
|
||||
lderr(cct) << "cannot disable mirroring: " << cpp_strerror(r) << dendl;
|
||||
return r;
|
||||
} else if (r == -ENOENT) {
|
||||
if (r == -ENOENT) {
|
||||
// mirroring is not enabled for this image
|
||||
ldout(cct, 20) << "ignoring disable command: mirroring is not enabled "
|
||||
"for this image" << dendl;
|
||||
return 0;
|
||||
} else if (r == -EOPNOTSUPP) {
|
||||
ldout(cct, 5) << "mirroring not supported by OSD" << dendl;
|
||||
return r;
|
||||
} else if (r < 0) {
|
||||
lderr(cct) << "cannot disable mirroring: " << cpp_strerror(r) << dendl;
|
||||
return r;
|
||||
}
|
||||
|
||||
bool is_primary;
|
||||
@ -1960,7 +1963,7 @@ remove_mirroring_image:
|
||||
|
||||
if (!old_format) {
|
||||
r = mirror_image_disable_internal(ictx, false);
|
||||
if (r < 0) {
|
||||
if (r < 0 && r != -EOPNOTSUPP) {
|
||||
lderr(cct) << "error disabling image mirroring: " << cpp_strerror(r)
|
||||
<< dendl;
|
||||
ictx->owner_lock.put_read();
|
||||
|
Loading…
Reference in New Issue
Block a user