X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Flibrbd%2Fobject_map%2FRemoveRequest.cc;fp=src%2Fceph%2Fsrc%2Flibrbd%2Fobject_map%2FRemoveRequest.cc;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=fa6c7b4189a92d35e70d2c821a112e1c59064c8c;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/librbd/object_map/RemoveRequest.cc b/src/ceph/src/librbd/object_map/RemoveRequest.cc deleted file mode 100644 index fa6c7b4..0000000 --- a/src/ceph/src/librbd/object_map/RemoveRequest.cc +++ /dev/null @@ -1,89 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab - -#include "librbd/object_map/RemoveRequest.h" -#include "common/dout.h" -#include "common/errno.h" -#include "cls/rbd/cls_rbd_client.h" -#include "librbd/ImageCtx.h" -#include "librbd/ObjectMap.h" -#include "librbd/Utils.h" -#include "include/assert.h" - -#define dout_subsys ceph_subsys_rbd -#undef dout_prefix -#define dout_prefix *_dout << "librbd::object_map::RemoveRequest: " - -namespace librbd { -namespace object_map { - -using util::create_rados_callback; - -template -RemoveRequest::RemoveRequest(I *image_ctx, Context *on_finish) - : m_image_ctx(image_ctx), m_on_finish(on_finish), - m_lock("object_map::RemoveRequest::m_lock") { -} - -template -void RemoveRequest::send() { - send_remove_object_map(); -} - -template -void RemoveRequest::send_remove_object_map() { - CephContext *cct = m_image_ctx->cct; - ldout(cct, 20) << __func__ << dendl; - - RWLock::WLocker snap_locker(m_image_ctx->snap_lock); - std::vector snap_ids; - snap_ids.push_back(CEPH_NOSNAP); - for (auto it : m_image_ctx->snap_info) { - snap_ids.push_back(it.first); - } - - Mutex::Locker locker(m_lock); - assert(m_ref_counter == 0); - - for (auto snap_id : snap_ids) { - m_ref_counter++; - std::string oid(ObjectMap<>::object_map_name(m_image_ctx->id, snap_id)); - using klass = RemoveRequest; - librados::AioCompletion *comp = - create_rados_callback(this); - - int r = m_image_ctx->md_ctx.aio_remove(oid, comp); - assert(r == 0); - comp->release(); - } -} - -template -Context *RemoveRequest::handle_remove_object_map(int *result) { - CephContext *cct = m_image_ctx->cct; - ldout(cct, 20) << __func__ << ": r=" << *result << dendl; - - { - Mutex::Locker locker(m_lock); - assert(m_ref_counter > 0); - m_ref_counter--; - - if (*result < 0 && *result != -ENOENT) { - lderr(cct) << "failed to remove object map: " << cpp_strerror(*result) - << dendl; - m_error_result = *result; - } - if (m_ref_counter > 0) { - return nullptr; - } - } - if (m_error_result < 0) { - *result = m_error_result; - } - return m_on_finish; -} - -} // namespace object_map -} // namespace librbd - -template class librbd::object_map::RemoveRequest;