diff options
author | Sage Weil <sage@inktank.com> | 2013-10-06 13:30:23 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-10-10 10:40:09 -0700 |
commit | 098dfc618dbdcfcf79e8104d02c901e2f9718d15 (patch) | |
tree | e291ecf83005f5259dea0b786d37aee562a7cbea | |
parent | c1bd72d439409ec098821f0d21d09515356c4c29 (diff) | |
download | ceph-098dfc618dbdcfcf79e8104d02c901e2f9718d15.tar.gz |
osdc/Objecter: factor pg_read out of list_objects code
This will get used later for other ops against PGs (instead of objects).
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/osdc/Objecter.cc | 15 | ||||
-rw-r--r-- | src/osdc/Objecter.h | 19 |
2 files changed, 21 insertions, 13 deletions
diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index bd1f2699136..2ab412b913a 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -1757,20 +1757,9 @@ void Objecter::list_objects(ListContext *list_context, Context *onfinish) { bufferlist *bl = new bufferlist(); C_List *onack = new C_List(list_context, onfinish, bl, this); - object_t oid; object_locator_t oloc(list_context->pool_id, list_context->nspace); - - // - Op *o = new Op(oid, oloc, op.ops, CEPH_OSD_FLAG_READ, onack, NULL, NULL); - o->priority = op.priority; - o->snapid = list_context->pool_snap_seq; - o->outbl = bl; - o->reply_epoch = &onack->epoch; - - o->base_pgid = pg_t(list_context->current_pg, list_context->pool_id, -1); - o->precalc_pgid = true; - - op_submit(o); + pg_read(list_context->current_pg, oloc, op, + bl, 0, onack, &onack->epoch); } void Objecter::_list_reply(ListContext *list_context, int r, bufferlist *bl, diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 5f523b93afa..e91e6dac82d 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -1439,6 +1439,25 @@ private: o->out_rval.swap(op.out_rval); return op_submit(o); } + tid_t pg_read(uint32_t hash, object_locator_t oloc, + ObjectOperation& op, + bufferlist *pbl, int flags, + Context *onack, + epoch_t *reply_epoch) { + Op *o = new Op(object_t(), oloc, + op.ops, flags | global_op_flags | CEPH_OSD_FLAG_READ, + onack, NULL, NULL); + o->precalc_pgid = true; + o->base_pgid = pg_t(hash, oloc.pool); + o->priority = op.priority; + o->snapid = CEPH_NOSNAP; + o->outbl = pbl; + o->out_bl.swap(op.out_bl); + o->out_handler.swap(op.out_handler); + o->out_rval.swap(op.out_rval); + o->reply_epoch = reply_epoch; + return op_submit(o); + } tid_t linger_mutate(const object_t& oid, const object_locator_t& oloc, ObjectOperation& op, const SnapContext& snapc, utime_t mtime, |