{
vector<int> acting;
pg_t pgid = op->pgid;
- if (op->oid.name.length()) {
+ if (!op->precalc_pgid) {
int ret = osdmap->object_locator_to_pg(op->oid, op->oloc, pgid);
if (ret == -ENOENT)
return RECALC_OP_TARGET_POOL_DNE;
o->reply_epoch = &onack->epoch;
o->pgid = pg_t(list_context->current_pg, list_context->pool_id, -1);
+ o->precalc_pgid = true;
op_submit(o);
}
utime_t stamp;
+ bool precalc_pgid;
+
Op(const object_t& o, const object_locator_t& ol, vector<OSDOp>& op,
int f, Context *ac, Context *co, eversion_t *ov) :
session(NULL), session_item(this), incarnation(0),
outbl(NULL),
flags(f), priority(0), onack(ac), oncommit(co),
tid(0), attempts(0),
- paused(false), objver(ov), reply_epoch(NULL) {
+ paused(false), objver(ov), reply_epoch(NULL), precalc_pgid(false) {
ops.swap(op);
/* initialize out_* to match op vector */