From 6b4a69757549d7df2decc45b8836813d334f5e91 Mon Sep 17 00:00:00 2001 From: shangdehao1 Date: Wed, 5 Jun 2019 08:30:04 +0800 Subject: [PATCH] librbd: move SharedPersistentObjectCacher to ParentCacheObjectDispatch Signed-off-by: Dehao Shang --- src/librbd/CMakeLists.txt | 1 - src/librbd/cache/ParentCacheObjectDispatch.cc | 33 +++++++++++- src/librbd/cache/ParentCacheObjectDispatch.h | 18 ++++++- .../cache/SharedPersistentObjectCacher.cc | 51 ------------------- .../cache/SharedPersistentObjectCacher.h | 40 --------------- .../cache/test_mock_ParentImageCache.cc | 3 -- 6 files changed, 48 insertions(+), 98 deletions(-) delete mode 100644 src/librbd/cache/SharedPersistentObjectCacher.cc delete mode 100644 src/librbd/cache/SharedPersistentObjectCacher.h diff --git a/src/librbd/CMakeLists.txt b/src/librbd/CMakeLists.txt index ca82d11b0f7..057d4a95c07 100644 --- a/src/librbd/CMakeLists.txt +++ b/src/librbd/CMakeLists.txt @@ -37,7 +37,6 @@ set(librbd_internal_srcs cache/ImageWriteback.cc cache/ObjectCacherObjectDispatch.cc cache/ParentCacheObjectDispatch.cc - cache/SharedPersistentObjectCacher.cc cache/ObjectCacherWriteback.cc cache/PassthroughImageCache.cc cache/WriteAroundObjectDispatch.cc diff --git a/src/librbd/cache/ParentCacheObjectDispatch.cc b/src/librbd/cache/ParentCacheObjectDispatch.cc index af30d28d9f0..daa1c1f707f 100644 --- a/src/librbd/cache/ParentCacheObjectDispatch.cc +++ b/src/librbd/cache/ParentCacheObjectDispatch.cc @@ -145,7 +145,7 @@ int ParentCacheObjectDispatch::handle_register_client(bool reg) { if (reg) { ldout(cct, 20) << "Parent cache open cache handler" << dendl; - m_object_store = new SharedPersistentObjectCacher(m_image_ctx, m_image_ctx->shared_cache_path); + m_object_store = new SharedPersistentObjectCacher(m_image_ctx, m_image_ctx->shared_cache_path); } return 0; } @@ -197,6 +197,37 @@ int ParentCacheObjectDispatch::create_cache_session(Context* on_finish, bool return 0; } +template +ParentCacheObjectDispatch::SharedPersistentObjectCacher::SharedPersistentObjectCacher ( + I *image_ctx, std::string cache_path) + : m_image_ctx(image_ctx) { + auto *cct = m_image_ctx->cct; + ldout(cct, 20) << dendl; +} + +template +ParentCacheObjectDispatch::SharedPersistentObjectCacher::~SharedPersistentObjectCacher() { +} + +template +int ParentCacheObjectDispatch::SharedPersistentObjectCacher::read_object( + std::string file_path, ceph::bufferlist* read_data, uint64_t offset, + uint64_t length, Context *on_finish) { + + auto *cct = m_image_ctx->cct; + ldout(cct, 20) << "file path: " << file_path << dendl; + + std::string error; + int ret = read_data->pread_file(file_path.c_str(), offset, length, &error); + if (ret < 0) { + ldout(cct, 5) << "read from file return error: " << error + << "file path= " << file_path + << dendl; + return ret; + } + return read_data->length(); +} + } // namespace cache } // namespace librbd diff --git a/src/librbd/cache/ParentCacheObjectDispatch.h b/src/librbd/cache/ParentCacheObjectDispatch.h index 3459f74f26a..4bacc278645 100644 --- a/src/librbd/cache/ParentCacheObjectDispatch.h +++ b/src/librbd/cache/ParentCacheObjectDispatch.h @@ -5,7 +5,7 @@ #define CEPH_LIBRBD_CACHE_PARENT_CACHER_OBJECT_DISPATCH_H #include "common/Mutex.h" -#include "SharedPersistentObjectCacher.h" +//#include "SharedPersistentObjectCacher.h" #include "librbd/io/ObjectDispatchInterface.h" #include "tools/immutable_object_cache/CacheClient.h" #include "librbd/cache/TypeTraits.h" @@ -120,6 +120,20 @@ public: } private: + + class SharedPersistentObjectCacher { + public: + + SharedPersistentObjectCacher(ImageCtxT *image_ctx, std::string cache_path); + ~SharedPersistentObjectCacher(); + + int read_object(std::string file_path, ceph::bufferlist* read_data, + uint64_t offset, uint64_t length, Context *on_finish); + + private: + ImageCtxT *m_image_ctx; + }; + void handle_read_cache( ceph::immutable_obj_cache::ObjectCacheRequest* ack, uint64_t read_off, uint64_t read_len, @@ -131,7 +145,7 @@ private: CacheClient *m_cache_client = nullptr; ImageCtxT* m_image_ctx; - SharedPersistentObjectCacher *m_object_store = nullptr; + SharedPersistentObjectCacher *m_object_store = nullptr; bool m_initialized; std::atomic m_re_connecting; }; diff --git a/src/librbd/cache/SharedPersistentObjectCacher.cc b/src/librbd/cache/SharedPersistentObjectCacher.cc deleted file mode 100644 index 3abc4df3606..00000000000 --- a/src/librbd/cache/SharedPersistentObjectCacher.cc +++ /dev/null @@ -1,51 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab - -#include "librbd/cache/SharedPersistentObjectCacher.h" -#include "include/buffer.h" -#include "common/dout.h" -#include "librbd/ImageCtx.h" - -#define dout_subsys ceph_subsys_rbd -#undef dout_prefix -#define dout_prefix *_dout << "librbd::cache::SharedPersistentObjectCacher: " << this \ - << " " << __func__ << ": " - -namespace librbd { -namespace cache { - -template -SharedPersistentObjectCacher::SharedPersistentObjectCacher(I *image_ctx, std::string cache_path) - : m_image_ctx(image_ctx) { - auto *cct = m_image_ctx->cct; - ldout(cct, 20) << dendl; -} - -template -SharedPersistentObjectCacher::~SharedPersistentObjectCacher() { -} - -template -int SharedPersistentObjectCacher::read_object(std::string file_path, - ceph::bufferlist* read_data, uint64_t offset, uint64_t length, - Context *on_finish) { - - auto *cct = m_image_ctx->cct; - ldout(cct, 20) << "file path: " << file_path << dendl; - - std::string error; - int ret = read_data->pread_file(file_path.c_str(), offset, length, &error); - if (ret < 0) { - ldout(cct, 5) << "read from file return error: " << error - << "file path= " << file_path - << dendl; - return ret; - } - return read_data->length(); -} - - -} // namespace cache -} // namespace librbd - -template class librbd::cache::SharedPersistentObjectCacher; diff --git a/src/librbd/cache/SharedPersistentObjectCacher.h b/src/librbd/cache/SharedPersistentObjectCacher.h deleted file mode 100644 index c7457000d31..00000000000 --- a/src/librbd/cache/SharedPersistentObjectCacher.h +++ /dev/null @@ -1,40 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab - -#ifndef CEPH_LIBRBD_CACHE_SHARED_PERSISTENT_OBJECT_CACHER -#define CEPH_LIBRBD_CACHE_SHARED_PERSISTENT_OBJECT_CACHER - -#include "include/buffer_fwd.h" -#include "include/int_types.h" -#include "common/Mutex.h" -#include -#include - -struct Context; - -namespace librbd { - -struct ImageCtx; - -namespace cache { - -template -class SharedPersistentObjectCacher { -public: - - SharedPersistentObjectCacher(ImageCtxT *image_ctx, std::string cache_path); - ~SharedPersistentObjectCacher(); - - int read_object(std::string file_path, ceph::bufferlist* read_data, - uint64_t offset, uint64_t length, Context *on_finish); - -private: - ImageCtxT *m_image_ctx; -}; - -} // namespace cache -} // namespace librbd - -extern template class librbd::cache::SharedPersistentObjectCacher; - -#endif // CEPH_LIBRBD_CACHE_FILE_IMAGE_STORE diff --git a/src/test/librbd/cache/test_mock_ParentImageCache.cc b/src/test/librbd/cache/test_mock_ParentImageCache.cc index acfc91e4640..fe6482d6020 100644 --- a/src/test/librbd/cache/test_mock_ParentImageCache.cc +++ b/src/test/librbd/cache/test_mock_ParentImageCache.cc @@ -10,7 +10,6 @@ #include "tools/immutable_object_cache/CacheClient.h" #include "test/immutable_object_cache/MockCacheDaemon.h" #include "librbd/cache/ParentCacheObjectDispatch.h" -#include "librbd/cache/SharedPersistentObjectCacher.h" #include "test/librbd/test_mock_fixture.h" #include "test/librbd/mock/MockImageCtx.h" @@ -43,9 +42,7 @@ struct TypeTraits { }; // namespace librbd #include "librbd/cache/ParentCacheObjectDispatch.cc" -#include "librbd/cache/SharedPersistentObjectCacher.cc" template class librbd::cache::ParentCacheObjectDispatch; -template class librbd::cache::SharedPersistentObjectCacher; namespace librbd { -- 2.39.5