summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-10-06 13:30:23 -0700
committerSage Weil <sage@inktank.com>2013-10-10 10:40:09 -0700
commit098dfc618dbdcfcf79e8104d02c901e2f9718d15 (patch)
treee291ecf83005f5259dea0b786d37aee562a7cbea
parentc1bd72d439409ec098821f0d21d09515356c4c29 (diff)
downloadceph-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.cc15
-rw-r--r--src/osdc/Objecter.h19
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,