From 3e3bb7b0fcb96fb36f22d0523d2bc4e436fa4e31 Mon Sep 17 00:00:00 2001 From: runsisi Date: Mon, 15 May 2017 15:50:47 +0800 Subject: [PATCH] librbd: translate error -ENOENT to 0 for list APIs Signed-off-by: runsisi --- src/librbd/api/Group.cc | 8 ++++++-- src/librbd/internal.cc | 8 +++++++- src/librbd/librbd.cc | 13 ------------- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/librbd/api/Group.cc b/src/librbd/api/Group.cc index 22339ea4e44a..090a98074c05 100644 --- a/src/librbd/api/Group.cc +++ b/src/librbd/api/Group.cc @@ -137,8 +137,12 @@ int Group::list(IoCtx& io_ctx, vector *names) r = cls_client::group_dir_list(&io_ctx, RBD_GROUP_DIRECTORY, last_read, max_read, &groups); if (r < 0) { - lderr(cct) << "error listing group in directory: " - << cpp_strerror(r) << dendl; + if (r != -ENOENT) { + lderr(cct) << "error listing group in directory: " + << cpp_strerror(r) << dendl; + } else { + r = 0; + } return r; } for (pair group : groups) { diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index 64ebf9545f76..941c3ba51024 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -546,8 +546,12 @@ int validate_pool(IoCtx &io_ctx, CephContext *cct) { bufferlist bl; int r = io_ctx.read(RBD_DIRECTORY, bl, 0, 0); - if (r < 0) + if (r < 0) { + if (r == -ENOENT) { + r = 0; + } return r; + } // old format images are in a tmap if (bl.length()) { @@ -1479,6 +1483,8 @@ int validate_pool(IoCtx &io_ctx, CephContext *cct) { if (r != -ENOENT) { lderr(cct) << "error listing rbd_trash entries: " << cpp_strerror(r) << dendl; + } else { + r = 0; } return r; } diff --git a/src/librbd/librbd.cc b/src/librbd/librbd.cc index 77d272283e5a..86ddd0a85735 100644 --- a/src/librbd/librbd.cc +++ b/src/librbd/librbd.cc @@ -2141,11 +2141,6 @@ extern "C" int rbd_list(rados_ioctx_t p, char *names, size_t *size) tracepoint(librbd, list_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id()); vector cpp_names; int r = librbd::list(io_ctx, cpp_names); - if (r == -ENOENT) { - tracepoint(librbd, list_exit, 0, *size); - return 0; - } - if (r < 0) { tracepoint(librbd, list_exit, r, *size); return r; @@ -4038,14 +4033,6 @@ extern "C" int rbd_group_list(rados_ioctx_t p, char *names, size_t *size) vector cpp_names; int r = librbd::list(io_ctx, cpp_names); - - if (r == -ENOENT) { - *size = 0; - *names = '\0'; - tracepoint(librbd, group_list_exit, 0); - return 0; - } - if (r < 0) { tracepoint(librbd, group_list_exit, r); return r; -- 2.47.3