From: Dan Mick Date: Thu, 4 Oct 2012 20:53:27 +0000 (-0700) Subject: librbd: fix error handling in get_parent_info X-Git-Tag: v0.54~116 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9889d819d7407d970069bda909a34f40f3b301b3;p=ceph.git librbd: fix error handling in get_parent_info Return ENOENT if no parent. Return error if pool reverse lookup fails. Signed-off-by: Dan Mick Reviewed-by: Josh Durgin --- diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index fbaf9acc87f2..703566013a78 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -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; } } diff --git a/src/test/test_librbd.cc b/src/test/test_librbd.cc index 1a34d68782bd..620af80e6c9e 100644 --- a/src/test/test_librbd.cc +++ b/src/test/test_librbd.cc @@ -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");