ObjectDesc old_value;
int snap;
bool balance_reads;
+ bool localize_reads;
std::shared_ptr<int> in_use;
RadosTestContext *context,
const string &oid,
bool balance_reads,
+ bool localize_reads,
TestOpStat *stat = 0)
: TestOp(n, context, stat),
completions(3),
oid(oid),
snap(0),
balance_reads(balance_reads),
+ localize_reads(localize_reads),
results(3),
retvals(3),
extent_results(3),
unsigned flags = 0;
if (balance_reads)
flags |= librados::OPERATION_BALANCE_READS;
+ if (localize_reads)
+ flags |= librados::OPERATION_LOCALIZE_READS;
ceph_assert(!context->io_ctx.aio_operate(context->prefix+oid, completions[0], &op,
flags, NULL));
ObjectDesc tgt_value;
int snap;
bool balance_reads;
+ bool localize_reads;
std::shared_ptr<int> in_use;
const string &oid,
const string &tgt_pool_name,
bool balance_reads,
+ bool localize_reads,
TestOpStat *stat = 0)
: TestOp(n, context, stat),
completions(2),
oid(oid),
snap(0),
balance_reads(balance_reads),
+ localize_reads(localize_reads),
results(2),
retvals(2),
waiting_on(0),
unsigned flags = 0;
if (balance_reads)
flags |= librados::OPERATION_BALANCE_READS;
+ if (localize_reads)
+ flags |= librados::OPERATION_LOCALIZE_READS;
ceph_assert(!context->io_ctx.aio_operate(context->prefix+oid, completions[0], &op,
flags, NULL));
int max_seconds,
bool ec_pool,
bool balance_reads,
+ bool localize_reads,
bool set_redirect,
bool set_chunk,
bool enable_dedup) :
m_total_weight(0),
m_ec_pool(ec_pool),
m_balance_reads(balance_reads),
+ m_localize_reads(localize_reads),
m_set_redirect(set_redirect),
m_set_chunk(set_chunk),
m_enable_dedup(enable_dedup)
switch (type) {
case TEST_OP_READ:
oid = *(rand_choose(context.oid_not_in_use));
- return new ReadOp(m_op, &context, oid, m_balance_reads, m_stats);
+ return new ReadOp(m_op, &context, oid, m_balance_reads, m_localize_reads,
+ m_stats);
case TEST_OP_WRITE:
oid = *(rand_choose(context.oid_not_in_use));
unsigned int m_total_weight;
bool m_ec_pool;
bool m_balance_reads;
+ bool m_localize_reads;
bool m_set_redirect;
bool m_set_chunk;
bool m_enable_dedup;
bool no_omap = false;
bool no_sparse = false;
bool balance_reads = false;
+ bool localize_reads = false;
bool set_redirect = false;
bool set_chunk = false;
bool enable_dedup = false;
no_sparse = true;
else if (strcmp(argv[i], "--balance_reads") == 0)
balance_reads = true;
+ else if (strcmp(argv[i], "--localize_reads") == 0)
+ localize_reads = true;
else if (strcmp(argv[i], "--pool-snaps") == 0)
pool_snaps = true;
else if (strcmp(argv[i], "--write-fadvise-dontneed") == 0)
WeightedTestGenerator gen = WeightedTestGenerator(
ops, objects,
op_weights, &stats, max_seconds,
- ec_pool, balance_reads, set_redirect, set_chunk, enable_dedup);
+ ec_pool, balance_reads, localize_reads,
+ set_redirect, set_chunk, enable_dedup);
int r = context.init();
if (r < 0) {
cerr << "Error initializing rados test context: "