]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: fix error handling in get_parent_info
authorDan Mick <dan.mick@inktank.com>
Thu, 4 Oct 2012 20:53:27 +0000 (13:53 -0700)
committerDan Mick <dan.mick@inktank.com>
Thu, 4 Oct 2012 22:20:29 +0000 (15:20 -0700)
Return ENOENT if no parent.
Return error if pool reverse lookup fails.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
src/librbd/internal.cc
src/test/test_librbd.cc

index fbaf9acc87f2894d66a58826c695cc5faca11861..703566013a783e6bcb3c3feb5634bafd924bf8d0 100644 (file)
@@ -1145,7 +1145,7 @@ reprotect_and_return_err:
        return r;
       }
       if (parent_spec.pool_id == -1)
-       return 0;
+       return -ENOENT;
     }
     if (parent_pool_name) {
       Rados rados(ictx->md_ctx);
@@ -1154,6 +1154,7 @@ reprotect_and_return_err:
       if (r < 0) {
        lderr(ictx->cct) << "error looking up pool name" << cpp_strerror(r)
                         << dendl;
+       return r;
       }
     }
 
index 1a34d68782bdfbbdcb40089552ce7ede5047d3f0..620af80e6c9e6e0f2bfdb1ea3514cb8c3becddee 100644 (file)
@@ -1022,6 +1022,12 @@ TEST(LibRBD, TestClone)
   // can't clone a non-snapshot, expect failure
   EXPECT_NE(0, rbd_clone(ioctx, "parent", NULL, ioctx, "child", features, &order));
 
+  // verify that there is no parent info on "parent"
+  char ppool[1], pname[1], psnapname[1];
+  ASSERT_EQ(-ENOENT, rbd_get_parent_info(parent, ppool, sizeof(ppool),
+           pname, sizeof(pname), psnapname, sizeof(psnapname)));
+  printf("parent has no parent info\n");
+
   // create a snapshot, reopen as the parent we're interested in
   ASSERT_EQ(0, rbd_snap_create(parent, "parent_snap"));
   printf("made snapshot \"parent@parent_snap\"\n");