template <typename I>
ParentCacheObjectDispatch<I>::ParentCacheObjectDispatch(
I* image_ctx) : m_image_ctx(image_ctx), m_cache_client(nullptr),
- m_object_store(nullptr), m_initialized(false), m_re_connecting(false),
+ m_initialized(false), m_re_connecting(false),
m_lock("librbd::cache::ParentCacheObjectDispatch::m_lock") {
std::string controller_path =
((CephContext*)(m_image_ctx->cct))->_conf.get_val<std::string>("immutable_object_cache_sock");
template <typename I>
ParentCacheObjectDispatch<I>::~ParentCacheObjectDispatch() {
- delete m_object_store;
delete m_cache_client;
}
ceph_assert(file_path != "");
// try to read from parent image cache
- int r = m_object_store->read_object(file_path, read_data, read_off, read_len, on_dispatched);
+ int r = read_object(file_path, read_data, read_off, read_len, on_dispatched);
if(r < 0) {
// cache read error, fall back to read rados
*dispatch_result = io::DISPATCH_RESULT_CONTINUE;
auto cct = m_image_ctx->cct;
ldout(cct, 20) << dendl;
- if (reg) {
- ldout(cct, 20) << "Parent cache open cache handler" << dendl;
- m_object_store = new SharedPersistentObjectCacher(m_image_ctx);
+ if (!reg) {
+ lderr(cct) << "Parent cache register fails." << dendl;
}
return 0;
}
[this, cct, register_ctx](int ret) {
if (ret < 0) {
lderr(cct) << "Parent cache fail to connect RO daeomn." << dendl;
- register_ctx->complete(-1);
+ register_ctx->complete(ret);
return;
}
}
template <typename I>
-ParentCacheObjectDispatch<I>::SharedPersistentObjectCacher::SharedPersistentObjectCacher (
- I *image_ctx) : m_image_ctx(image_ctx) {
- auto *cct = m_image_ctx->cct;
- ldout(cct, 20) << dendl;
-}
-
-template <typename I>
-ParentCacheObjectDispatch<I>::SharedPersistentObjectCacher::~SharedPersistentObjectCacher() {
-}
-
-template <typename I>
-int ParentCacheObjectDispatch<I>::SharedPersistentObjectCacher::read_object(
+int ParentCacheObjectDispatch<I>::read_object(
std::string file_path, ceph::bufferlist* read_data, uint64_t offset,
uint64_t length, Context *on_finish) {
private:
- class SharedPersistentObjectCacher {
- public:
-
- SharedPersistentObjectCacher(ImageCtxT *image_ctx);
- ~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;
- };
-
+ int read_object(std::string file_path, ceph::bufferlist* read_data,
+ uint64_t offset, uint64_t length, Context *on_finish);
void handle_read_cache(
ceph::immutable_obj_cache::ObjectCacheRequest* ack,
uint64_t read_off, uint64_t read_len,
ImageCtxT* m_image_ctx;
CacheClient *m_cache_client;
- SharedPersistentObjectCacher *m_object_store;
bool m_initialized;
std::atomic<bool> m_re_connecting;
Mutex m_lock;