]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: get_parent_info should return cached parent name
authorJason Dillaman <dillaman@redhat.com>
Fri, 28 Apr 2017 13:24:37 +0000 (09:24 -0400)
committerJason Dillaman <dillaman@redhat.com>
Mon, 1 May 2017 13:06:22 +0000 (09:06 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/librbd/internal.cc

index 7558169c9e46437057301fafcb146bbfe18da276..af7a3c60fc6928ecfafed76715cab5589cb9770d 100644 (file)
@@ -1064,7 +1064,8 @@ int validate_pool(IoCtx &io_ctx, CephContext *cct) {
     } else {
       r = ictx->get_parent_spec(ictx->snap_id, &parent_spec);
       if (r < 0) {
-       lderr(ictx->cct) << "Can't find snapshot id = " << ictx->snap_id << dendl;
+       lderr(ictx->cct) << "Can't find snapshot id = " << ictx->snap_id
+                         << dendl;
        return r;
       }
       if (parent_spec.pool_id == -1)
@@ -1093,13 +1094,8 @@ int validate_pool(IoCtx &io_ctx, CephContext *cct) {
     }
 
     if (parent_name) {
-      r = cls_client::dir_get_name(&ictx->parent->md_ctx, RBD_DIRECTORY,
-                                  parent_spec.image_id, parent_name);
-      if (r < 0) {
-       lderr(ictx->cct) << "error getting parent image name: "
-                        << cpp_strerror(r) << dendl;
-       return r;
-      }
+      RWLock::RLocker snap_locker(ictx->parent->snap_lock);
+      *parent_name = ictx->parent->name;
     }
 
     return 0;