]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-mirror: ignore permission errors on rbd_mirroring object 16264/head
authorJason Dillaman <dillaman@redhat.com>
Tue, 11 Jul 2017 17:42:35 +0000 (13:42 -0400)
committerJason Dillaman <dillaman@redhat.com>
Tue, 11 Jul 2017 17:44:11 +0000 (13:44 -0400)
Fixes: http://tracker.ceph.com/issues/20571
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/tools/rbd_mirror/ClusterWatcher.cc

index e193b8ccdf516b6f46b9354136aefcce86918dd6..9bb96b166dd2c33ef022f45a5482f8dc158619ee 100644 (file)
@@ -4,6 +4,7 @@
 #include "ClusterWatcher.h"
 #include "common/debug.h"
 #include "common/errno.h"
+#include "cls/rbd/cls_rbd_client.h"
 #include "librbd/internal.h"
 #include "librbd/api/Mirror.h"
 
@@ -89,14 +90,17 @@ void ClusterWatcher::read_pool_peers(PoolPeers *pool_peers,
       continue;
     }
 
-    rbd_mirror_mode_t mirror_mode;
-    r = librbd::api::Mirror<>::mode_get(ioctx, &mirror_mode);
-    if (r < 0) {
+    cls::rbd::MirrorMode mirror_mode_internal;
+    r = librbd::cls_client::mirror_mode_get(&ioctx, &mirror_mode_internal);
+    if (r == -EPERM) {
+      dout(10) << "access denied querying pool " << pool_name << dendl;
+      continue;
+    } else if (r < 0) {
       derr << "could not tell whether mirroring was enabled for " << pool_name
           << " : " << cpp_strerror(r) << dendl;
       continue;
     }
-    if (mirror_mode == RBD_MIRROR_MODE_DISABLED) {
+    if (mirror_mode_internal == cls::rbd::MIRROR_MODE_DISABLED) {
       dout(10) << "mirroring is disabled for pool " << pool_name << dendl;
       continue;
     }