From 6d9da6a6413a8b583080eb29d3074992f9a463ca Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Fri, 18 Dec 2015 16:40:35 -0500 Subject: [PATCH] librbd: uninitialized state in snap remove state machine Signed-off-by: Jason Dillaman --- src/librbd/operation/SnapshotRemoveRequest.cc | 5 +++++ src/librbd/operation/SnapshotRemoveRequest.h | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/librbd/operation/SnapshotRemoveRequest.cc b/src/librbd/operation/SnapshotRemoveRequest.cc index a227be446f3..4893ad1c942 100644 --- a/src/librbd/operation/SnapshotRemoveRequest.cc +++ b/src/librbd/operation/SnapshotRemoveRequest.cc @@ -34,6 +34,9 @@ std::ostream& operator<<(std::ostream& os, case SnapshotRemoveRequest::STATE_RELEASE_SNAP_ID: os << "RELEASE_SNAP_ID"; break; + case SnapshotRemoveRequest::STATE_ERROR: + os << "STATE_ERROR"; + break; default: os << "UNKNOWN (" << static_cast(state) << ")"; break; @@ -127,6 +130,8 @@ void SnapshotRemoveRequest::send_remove_child() { int r = image_ctx.get_parent_spec(m_snap_id, &our_pspec); if (r < 0) { lderr(cct) << "failed to retrieve parent spec" << dendl; + m_state = STATE_ERROR; + this->async_complete(r); return; } diff --git a/src/librbd/operation/SnapshotRemoveRequest.h b/src/librbd/operation/SnapshotRemoveRequest.h index ea950a55d35..48e14ae74f8 100644 --- a/src/librbd/operation/SnapshotRemoveRequest.h +++ b/src/librbd/operation/SnapshotRemoveRequest.h @@ -52,7 +52,8 @@ public: STATE_REMOVE_OBJECT_MAP, STATE_REMOVE_CHILD, STATE_REMOVE_SNAP, - STATE_RELEASE_SNAP_ID + STATE_RELEASE_SNAP_ID, + STATE_ERROR }; SnapshotRemoveRequest(ImageCtxT &image_ctx, Context *on_finish, -- 2.47.3