From: Jason Dillaman Date: Tue, 10 Jan 2017 13:33:30 +0000 (-0500) Subject: librbd: resolve static analyser warnings X-Git-Tag: v12.0.0~217^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F12863%2Fhead;p=ceph.git librbd: resolve static analyser warnings Signed-off-by: Jason Dillaman --- diff --git a/src/cls/rbd/cls_rbd.cc b/src/cls/rbd/cls_rbd.cc index 4cd079cc73da..22fd7577b364 100644 --- a/src/cls/rbd/cls_rbd.cc +++ b/src/cls/rbd/cls_rbd.cc @@ -2712,19 +2712,19 @@ int metadata_get(cls_method_context_t hctx, bufferlist *in, bufferlist *out) int snapshot_get_limit(cls_method_context_t hctx, bufferlist *in, bufferlist *out) { - int rc; uint64_t snap_limit; - - rc = read_key(hctx, "snap_limit", &snap_limit); - if (rc == -ENOENT) { - rc = 0; - ::encode(UINT64_MAX, *out); - } else { - ::encode(snap_limit, *out); + int r = read_key(hctx, "snap_limit", &snap_limit); + if (r == -ENOENT) { + snap_limit = UINT64_MAX; + } else if (r < 0) { + CLS_ERR("error retrieving snapshot limit: %s", cpp_strerror(r).c_str()); + return r; } CLS_LOG(20, "read snapshot limit %lu", snap_limit); - return rc; + ::encode(snap_limit, *out); + + return 0; } int snapshot_set_limit(cls_method_context_t hctx, bufferlist *in, @@ -3777,7 +3777,10 @@ int mirror_peer_add(cls_method_context_t hctx, bufferlist *in, std::string mirror_uuid; r = mirror::uuid_get(hctx, &mirror_uuid); - if (mirror_peer.uuid == mirror_uuid) { + if (r < 0) { + CLS_ERR("error retrieving mirroring uuid: %s", cpp_strerror(r).c_str()); + return r; + } else if (mirror_peer.uuid == mirror_uuid) { CLS_ERR("peer uuid '%s' matches pool mirroring uuid", mirror_uuid.c_str()); return -EINVAL; diff --git a/src/librbd/AioImageRequest.cc b/src/librbd/AioImageRequest.cc index 387b78678646..e3a75d634b44 100644 --- a/src/librbd/AioImageRequest.cc +++ b/src/librbd/AioImageRequest.cc @@ -472,7 +472,7 @@ uint64_t AioImageWrite::append_journal_event( const AioObjectRequests &requests, bool synchronous) { I &image_ctx = this->m_image_ctx; - uint64_t tid; + uint64_t tid = 0; uint64_t buffer_offset = 0; assert(!this->m_image_extents.empty()); for (auto &extent : this->m_image_extents) { @@ -561,7 +561,7 @@ uint64_t AioImageDiscard::append_journal_event( const AioObjectRequests &requests, bool synchronous) { I &image_ctx = this->m_image_ctx; - uint64_t tid; + uint64_t tid = 0; assert(!this->m_image_extents.empty()); for (auto &extent : this->m_image_extents) { journal::EventEntry event_entry(journal::AioDiscardEvent(extent.first, diff --git a/src/librbd/image/CreateRequest.cc b/src/librbd/image/CreateRequest.cc index f71642ddc8bd..5f0bbe6f9de3 100644 --- a/src/librbd/image/CreateRequest.cc +++ b/src/librbd/image/CreateRequest.cc @@ -412,7 +412,7 @@ Context *CreateRequest::handle_negotiate_features(int *result) { ldout(m_cct, 20) << __func__ << ": r=" << *result << dendl; uint64_t all_features; - if (*result == 0) { + if (*result >= 0) { bufferlist::iterator it = m_outbl.begin(); *result = cls_client::get_all_features_finish(&it, &all_features); } diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index 49e4e4b9f191..e7742c5ac4bd 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -3029,6 +3029,7 @@ void filter_out_mirror_watchers(ImageCtx *ictx, if (r < 0) { lderr(cct) << "error enabling mirroring for image " << img_pair.first << ": " << cpp_strerror(r) << dendl; + img_ctx->state->close(); return r; }