rbd-mirror: block proxied ops with -EROFS return code

When replicating to a local image, the daemon will own the
exclusive lock and will receive any proxied maintenance ops
from other clients. Since the image is non-primary, respond
with -EROFS.

Fixes: http://tracker.ceph.com/issues/16411
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
This commit is contained in:
Jason Dillaman 2016-06-22 10:14:21 -04:00
parent 93e2faf38e
commit 07b49df24e

View File

@ -141,6 +141,9 @@ void OpenLocalImageRequest<I>::send_lock_image() {
return;
}
// disallow any proxied maintenance operations before grabbing lock
(*m_local_image_ctx)->exclusive_lock->block_requests(-EROFS);
Context *ctx = create_context_callback<
OpenLocalImageRequest<I>, &OpenLocalImageRequest<I>::handle_lock_image>(
this);