@@ -241,6 +241,9 @@ librados::IoCtxImpl::IoCtxImpl(RadosClient *c, Objecter *objecter,
241241 oloc(poolid),
242242 aio_write_seq(0 ), objecter(objecter)
243243{
244+ if (!c->cct ->_conf .get_val <bool >(" rados_replica_read_policy_on_objclass" )) {
245+ objclass_flags_mask = ~(CEPH_OSD_FLAG_LOCALIZE_READS | CEPH_OSD_FLAG_BALANCE_READS);
246+ }
244247}
245248
246249void librados::IoCtxImpl::set_snap_read (snapid_t s)
@@ -1313,7 +1316,7 @@ int librados::IoCtxImpl::exec(const object_t& oid,
13131316 ::ObjectOperation rd;
13141317 prepare_assert_ops (&rd);
13151318 rd.call (cls, method, inbl);
1316- return operate_read (oid, &rd, &outbl, 0 , ~(CEPH_OSD_FLAG_LOCALIZE_READS | CEPH_OSD_FLAG_BALANCE_READS) );
1319+ return operate_read (oid, &rd, &outbl, 0 , objclass_flags_mask );
13171320}
13181321
13191322int librados::IoCtxImpl::aio_exec (const object_t & oid, AioCompletionImpl *c,
@@ -1333,7 +1336,7 @@ int librados::IoCtxImpl::aio_exec(const object_t& oid, AioCompletionImpl *c,
13331336 prepare_assert_ops (&rd);
13341337 rd.call (cls, method, inbl);
13351338 Objecter::Op *o = objecter->prepare_read_op (
1336- oid, oloc, rd, snap_seq, outbl, extra_op_flags, ~(CEPH_OSD_FLAG_LOCALIZE_READS | CEPH_OSD_FLAG_BALANCE_READS) , oncomplete, &c->objver );
1339+ oid, oloc, rd, snap_seq, outbl, extra_op_flags, objclass_flags_mask , oncomplete, &c->objver );
13371340 objecter->op_submit (o, &c->tid );
13381341 return 0 ;
13391342}
@@ -1359,7 +1362,7 @@ int librados::IoCtxImpl::aio_exec(const object_t& oid, AioCompletionImpl *c,
13591362 prepare_assert_ops (&rd);
13601363 rd.call (cls, method, inbl);
13611364 Objecter::Op *o = objecter->prepare_read_op (
1362- oid, oloc, rd, snap_seq, &c->bl , extra_op_flags, ~(CEPH_OSD_FLAG_LOCALIZE_READS | CEPH_OSD_FLAG_BALANCE_READS) , oncomplete, &c->objver );
1365+ oid, oloc, rd, snap_seq, &c->bl , extra_op_flags, objclass_flags_mask , oncomplete, &c->objver );
13631366 objecter->op_submit (o, &c->tid );
13641367 return 0 ;
13651368}
0 commit comments