From: Sage Weil Date: Mon, 4 Apr 2016 15:03:25 +0000 (-0400) Subject: librados: use Objecter::prepare_*_op helpers to set c->tid safely X-Git-Tag: v10.1.2~42^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F7981%2Fhead;p=ceph.git librados: use Objecter::prepare_*_op helpers to set c->tid safely Signed-off-by: Sage Weil --- diff --git a/src/librados/IoCtxImpl.cc b/src/librados/IoCtxImpl.cc index dc2eeca24639..ce1a220d4e59 100644 --- a/src/librados/IoCtxImpl.cc +++ b/src/librados/IoCtxImpl.cc @@ -678,7 +678,8 @@ int librados::IoCtxImpl::operate(const object_t& oid, ::ObjectOperation *o, Context *oncommit = new C_SafeCond(&mylock, &cond, &done, &r); int op = o->ops[0].op.op; - ldout(client->cct, 10) << ceph_osd_op_name(op) << " oid=" << oid << " nspace=" << oloc.nspace << dendl; + ldout(client->cct, 10) << ceph_osd_op_name(op) << " oid=" << oid + << " nspace=" << oloc.nspace << dendl; Objecter::Op *objecter_op = objecter->prepare_mutate_op(oid, oloc, *o, snapc, ut, flags, NULL, oncommit, &ver); @@ -764,8 +765,10 @@ int librados::IoCtxImpl::aio_operate(const object_t& oid, c->io = this; queue_aio_write(c); - c->tid = objecter->mutate(oid, oloc, *o, snap_context, ut, flags, onack, - oncommit, &c->objver); + Objecter::Op *op = objecter->prepare_mutate_op( + oid, oloc, *o, snap_context, ut, flags, onack, + oncommit, &c->objver); + objecter->op_submit(op, &c->tid); return 0; } @@ -783,9 +786,11 @@ int librados::IoCtxImpl::aio_read(const object_t oid, AioCompletionImpl *c, c->io = this; c->blp = pbl; - c->tid = objecter->read(oid, oloc, - off, len, snapid, pbl, 0, - onack, &c->objver); + Objecter::Op *o = objecter->prepare_read_op( + oid, oloc, + off, len, snapid, pbl, 0, + onack, &c->objver); + objecter->op_submit(o, &c->tid); return 0; } @@ -804,10 +809,11 @@ int librados::IoCtxImpl::aio_read(const object_t oid, AioCompletionImpl *c, c->bl.push_back(buffer::create_static(len, buf)); c->blp = &c->bl; - c->tid = objecter->read(oid, oloc, - off, len, snapid, &c->bl, 0, - onack, &c->objver); - + Objecter::Op *o = objecter->prepare_read_op( + oid, oloc, + off, len, snapid, &c->bl, 0, + onack, &c->objver); + objecter->op_submit(o, &c->tid); return 0; } @@ -839,9 +845,11 @@ int librados::IoCtxImpl::aio_sparse_read(const object_t oid, onack->m_ops.sparse_read(off, len, m, data_bl, NULL); - c->tid = objecter->read(oid, oloc, - onack->m_ops, snap_seq, NULL, 0, - onack, &c->objver); + Objecter::Op *o = objecter->prepare_read_op( + oid, oloc, + onack->m_ops, snap_seq, NULL, 0, + onack, &c->objver); + objecter->op_submit(o, &c->tid); return 0; } @@ -864,9 +872,11 @@ int librados::IoCtxImpl::aio_write(const object_t &oid, AioCompletionImpl *c, c->io = this; queue_aio_write(c); - c->tid = objecter->write(oid, oloc, - off, len, snapc, bl, ut, 0, - onack, onsafe, &c->objver); + Objecter::Op *o = objecter->prepare_write_op( + oid, oloc, + off, len, snapc, bl, ut, 0, + onack, onsafe, &c->objver); + objecter->op_submit(o, &c->tid); return 0; } @@ -888,9 +898,11 @@ int librados::IoCtxImpl::aio_append(const object_t &oid, AioCompletionImpl *c, c->io = this; queue_aio_write(c); - c->tid = objecter->append(oid, oloc, - len, snapc, bl, ut, 0, - onack, onsafe, &c->objver); + Objecter::Op *o = objecter->prepare_append_op( + oid, oloc, + len, snapc, bl, ut, 0, + onack, onsafe, &c->objver); + objecter->op_submit(o, &c->tid); return 0; } @@ -913,9 +925,11 @@ int librados::IoCtxImpl::aio_write_full(const object_t &oid, c->io = this; queue_aio_write(c); - c->tid = objecter->write_full(oid, oloc, - snapc, bl, ut, 0, - onack, onsafe, &c->objver); + Objecter::Op *o = objecter->prepare_write_full_op( + oid, oloc, + snapc, bl, ut, 0, + onack, onsafe, &c->objver); + objecter->op_submit(o, &c->tid); return 0; } @@ -934,9 +948,11 @@ int librados::IoCtxImpl::aio_remove(const object_t &oid, AioCompletionImpl *c) c->io = this; queue_aio_write(c); - c->tid = objecter->remove(oid, oloc, - snapc, ut, 0, - onack, onsafe, &c->objver); + Objecter::Op *o = objecter->prepare_remove_op( + oid, oloc, + snapc, ut, 0, + onack, onsafe, &c->objver); + objecter->op_submit(o, &c->tid); return 0; } @@ -948,9 +964,11 @@ int librados::IoCtxImpl::aio_stat(const object_t& oid, AioCompletionImpl *c, C_aio_stat_Ack *onack = new C_aio_stat_Ack(c, pmtime); c->io = this; - c->tid = objecter->stat(oid, oloc, - snap_seq, psize, &onack->mtime, 0, - onack, &c->objver); + Objecter::Op *o = objecter->prepare_stat_op( + oid, oloc, + snap_seq, psize, &onack->mtime, 0, + onack, &c->objver); + objecter->op_submit(o, &c->tid); return 0; } @@ -961,9 +979,11 @@ int librados::IoCtxImpl::aio_stat2(const object_t& oid, AioCompletionImpl *c, C_aio_stat2_Ack *onack = new C_aio_stat2_Ack(c, pts); c->io = this; - c->tid = objecter->stat(oid, oloc, - snap_seq, psize, &onack->mtime, 0, - onack, &c->objver); + Objecter::Op *o = objecter->prepare_stat_op( + oid, oloc, + snap_seq, psize, &onack->mtime, 0, + onack, &c->objver); + objecter->op_submit(o, &c->tid); return 0; } @@ -984,7 +1004,9 @@ int librados::IoCtxImpl::hit_set_list(uint32_t hash, AioCompletionImpl *c, ::ObjectOperation rd; rd.hit_set_ls(pls, NULL); object_locator_t oloc(poolid); - c->tid = objecter->pg_read(hash, oloc, rd, NULL, 0, onack, NULL, NULL); + Objecter::Op *o = objecter->prepare_pg_read_op( + hash, oloc, rd, NULL, 0, onack, NULL, NULL); + objecter->op_submit(o, &c->tid); return 0; } @@ -999,7 +1021,9 @@ int librados::IoCtxImpl::hit_set_get(uint32_t hash, AioCompletionImpl *c, ::ObjectOperation rd; rd.hit_set_get(ceph::real_clock::from_time_t(stamp), pbl, 0); object_locator_t oloc(poolid); - c->tid = objecter->pg_read(hash, oloc, rd, NULL, 0, onack, NULL, NULL); + Objecter::Op *o = objecter->prepare_pg_read_op( + hash, oloc, rd, NULL, 0, onack, NULL, NULL); + objecter->op_submit(o, &c->tid); return 0; } @@ -1041,8 +1065,10 @@ int librados::IoCtxImpl::get_inconsistent_objects(const pg_t& pg, ::ObjectOperation op; op.scrub_ls(start_after, max_to_get, objects, interval, nullptr); object_locator_t oloc{poolid, pg.ps()}; - c->tid = objecter->pg_read(oloc.hash, oloc, op, nullptr, CEPH_OSD_FLAG_PGOP, onack, - nullptr, nullptr); + Objecter::Op *o = objecter->prepare_pg_read_op( + oloc.hash, oloc, op, nullptr, CEPH_OSD_FLAG_PGOP, onack, + nullptr, nullptr); + objecter->op_submit(o, &c->tid); return 0; } @@ -1060,8 +1086,10 @@ int librados::IoCtxImpl::get_inconsistent_snapsets(const pg_t& pg, ::ObjectOperation op; op.scrub_ls(start_after, max_to_get, snapsets, interval, nullptr); object_locator_t oloc{poolid, pg.ps()}; - c->tid = objecter->pg_read(oloc.hash, oloc, op, nullptr, CEPH_OSD_FLAG_PGOP, onack, - nullptr, nullptr); + Objecter::Op *o = objecter->prepare_pg_read_op( + oloc.hash, oloc, op, nullptr, CEPH_OSD_FLAG_PGOP, onack, + nullptr, nullptr); + objecter->op_submit(o, &c->tid); return 0; } @@ -1119,8 +1147,9 @@ int librados::IoCtxImpl::aio_exec(const object_t& oid, AioCompletionImpl *c, ::ObjectOperation rd; prepare_assert_ops(&rd); rd.call(cls, method, inbl); - c->tid = objecter->read(oid, oloc, rd, snap_seq, outbl, 0, onack, &c->objver); - + Objecter::Op *o = objecter->prepare_read_op( + oid, oloc, rd, snap_seq, outbl, 0, onack, &c->objver); + objecter->op_submit(o, &c->tid); return 0; }