From: Jason Dillaman Date: Mon, 6 Jul 2015 23:40:07 +0000 (-0400) Subject: librbd: rename C_AioWrite to C_AioRequest X-Git-Tag: v10.0.1~52^2~40 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4c33afbeec127a512113f749cfd55af97c770e8b;p=ceph.git librbd: rename C_AioWrite to C_AioRequest This context is used for more than just write requests. It is always tied to an AioCompletion, so moved request reference counting management within class. Signed-off-by: Jason Dillaman --- diff --git a/src/librbd/AioCompletion.cc b/src/librbd/AioCompletion.cc index ec7f6846ffb4..c3cda28a5ef0 100644 --- a/src/librbd/AioCompletion.cc +++ b/src/librbd/AioCompletion.cc @@ -170,7 +170,7 @@ namespace librbd { m_completion->lock.Unlock(); r = m_req->m_object_len; } - m_completion->complete_request(m_cct, r); + C_AioRequest::finish(r); } void C_CacheRead::complete(int r) { diff --git a/src/librbd/AioCompletion.h b/src/librbd/AioCompletion.h index fddf5fba750d..a75599e6cf78 100644 --- a/src/librbd/AioCompletion.h +++ b/src/librbd/AioCompletion.h @@ -156,33 +156,33 @@ namespace librbd { } }; - class C_AioRead : public Context { + class C_AioRequest : public Context { public: - C_AioRead(CephContext *cct, AioCompletion *completion) - : m_cct(cct), m_completion(completion), m_req(NULL) - { } - virtual ~C_AioRead() {} - virtual void finish(int r); - void set_req(AioRead *req) { - m_req = req; + C_AioRequest(CephContext *cct, AioCompletion *completion) + : m_cct(cct), m_completion(completion) { + m_completion->add_request(); } - private: + virtual ~C_AioRequest() {} + virtual void finish(int r) { + m_completion->complete_request(m_cct, r); + } + protected: CephContext *m_cct; AioCompletion *m_completion; - AioRead *m_req; }; - class C_AioWrite : public Context { + class C_AioRead : public C_AioRequest { public: - C_AioWrite(CephContext *cct, AioCompletion *completion) - : m_cct(cct), m_completion(completion) {} - virtual ~C_AioWrite() {} - virtual void finish(int r) { - m_completion->complete_request(m_cct, r); + C_AioRead(CephContext *cct, AioCompletion *completion) + : C_AioRequest(cct, completion), m_req(NULL) { + } + virtual ~C_AioRead() {} + virtual void finish(int r); + void set_req(AioRead *req) { + m_req = req; } private: - CephContext *m_cct; - AioCompletion *m_completion; + AioRead *m_req; }; class C_CacheRead : public Context { diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index 82bd61b942e6..e027f7577236 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -3676,13 +3676,11 @@ reprotect_and_return_err: RWLock::RLocker owner_locker(ictx->owner_lock); ictx->user_flushed(); - C_AioWrite *flush_ctx = new C_AioWrite(cct, c); - c->add_request(); + C_AioRequest *flush_ctx = new C_AioRequest(cct, c); ictx->flush_async_operations(flush_ctx); c->start_op(ictx, AIO_TYPE_FLUSH); - C_AioWrite *req_comp = new C_AioWrite(cct, c); - c->add_request(); + C_AioRequest *req_comp = new C_AioRequest(cct, c); if (ictx->object_cacher) { ictx->flush_cache_aio(req_comp); } else { @@ -3817,14 +3815,12 @@ reprotect_and_return_err: bl.append(buf + q->first, q->second); } - C_AioWrite *req_comp = new C_AioWrite(cct, c); + C_AioRequest *req_comp = new C_AioRequest(cct, c); if (ictx->object_cacher) { - c->add_request(); ictx->write_to_cache(p->oid, bl, p->length, p->offset, req_comp, op_flags); } else { AioWrite *req = new AioWrite(ictx, p->oid.name, p->objectno, p->offset, bl, snapc, req_comp); - c->add_request(); req->set_op_flags(op_flags); req->send(); @@ -3948,9 +3944,8 @@ reprotect_and_return_err: for (vector::iterator p = extents.begin(); p != extents.end(); ++p) { ldout(cct, 20) << " oid " << p->oid << " " << p->offset << "~" << p->length << " from " << p->buffer_extents << dendl; - C_AioWrite *req_comp = new C_AioWrite(cct, c); + C_AioRequest *req_comp = new C_AioRequest(cct, c); AbstractWrite *req; - c->add_request(); if (p->length == ictx->layout.fl_object_size) { req = new AioRemove(ictx, p->oid.name, p->objectno, snapc, req_comp); @@ -4123,7 +4118,6 @@ reprotect_and_return_err: q->length, q->buffer_extents, snap_id, true, req_comp, op_flags); req_comp->set_req(req); - c->add_request(); if (ictx->object_cacher) { C_CacheRead *cache_comp = new C_CacheRead(ictx, req);