tracepoint(osd, do_osd_op_pre_omapgetkeys, soid.oid.name.c_str(), soid.snap.val, start_after.c_str(), max_return);
set<string> out_set;
- if (!pool.info.require_rollback()) {
+ if (pool.info.supports_omap()) {
ObjectMap::ObjectMapIterator iter = osd->store->get_omap_iterator(
coll, soid
);
tracepoint(osd, do_osd_op_pre_omapgetvals, soid.oid.name.c_str(), soid.snap.val, start_after.c_str(), max_return, filter_prefix.c_str());
map<string, bufferlist> out_set;
- if (!pool.info.require_rollback()) {
+ if (pool.info.supports_omap()) {
ObjectMap::ObjectMapIterator iter = osd->store->get_omap_iterator(
coll, soid
);
case CEPH_OSD_OP_OMAPGETHEADER:
tracepoint(osd, do_osd_op_pre_omapgetheader, soid.oid.name.c_str(), soid.snap.val);
- if (pool.info.require_rollback()) {
+ if (!pool.info.supports_omap()) {
// return empty header
break;
}
}
tracepoint(osd, do_osd_op_pre_omapgetvalsbykeys, soid.oid.name.c_str(), soid.snap.val, list_entries(keys_to_get).c_str());
map<string, bufferlist> out;
- if (!pool.info.require_rollback()) {
+ if (pool.info.supports_omap()) {
osd->store->omap_get_values(coll, soid, keys_to_get, &out);
} // else return empty omap entries
::encode(out, osd_op.outdata);
map<string, bufferlist> out;
- if (!pool.info.require_rollback()) {
+ if (pool.info.supports_omap()) {
set<string> to_get;
for (map<string, pair<bufferlist, int> >::iterator i = assertions.begin();
i != assertions.end();
// OMAP Write ops
case CEPH_OSD_OP_OMAPSETVALS:
- if (pool.info.require_rollback()) {
+ if (!pool.info.supports_omap()) {
result = -EOPNOTSUPP;
tracepoint(osd, do_osd_op_pre_omapsetvals, soid.oid.name.c_str(), soid.snap.val, "???");
break;
case CEPH_OSD_OP_OMAPSETHEADER:
tracepoint(osd, do_osd_op_pre_omapsetheader, soid.oid.name.c_str(), soid.snap.val);
- if (pool.info.require_rollback()) {
+ if (!pool.info.supports_omap()) {
result = -EOPNOTSUPP;
break;
}
case CEPH_OSD_OP_OMAPCLEAR:
tracepoint(osd, do_osd_op_pre_omapclear, soid.oid.name.c_str(), soid.snap.val);
- if (pool.info.require_rollback()) {
+ if (!pool.info.supports_omap()) {
result = -EOPNOTSUPP;
break;
}
break;
case CEPH_OSD_OP_OMAPRMKEYS:
- if (pool.info.require_rollback()) {
+ if (!pool.info.supports_omap()) {
result = -EOPNOTSUPP;
tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val, "???");
break;
// omap
uint32_t omap_keys = 0;
- if (pool.info.require_rollback()) {
+ if (!pool.info.supports_omap()) {
cursor.omap_complete = true;
} else {
if (left > 0 && !cursor.omap_complete) {
}
uint32_t copyget_flags = 0;
- if (pool.info.require_rollback())
+ if (!pool.info.supports_omap())
copyget_flags |= CEPH_OSD_COPY_GET_FLAG_NOTSUPP_OMAP;
op.copy_get(&cop->cursor, get_copy_chunk_size(), copyget_flags,
if (cop->omap_data.length() || cop->omap_header.length())
cop->results.has_omap = true;
- if (r >= 0 && pool.info.require_rollback() &&
+ if (r >= 0 && !pool.info.supports_omap() &&
(cop->omap_data.length() || cop->omap_header.length())) {
r = -EOPNOTSUPP;
}
cop->dest_obj_fadvise_flags);
cop->data.clear();
}
- if (!pool.info.require_rollback()) {
+ if (pool.info.supports_omap()) {
if (!cop->temp_cursor.omap_complete) {
if (cop->omap_header.length()) {
cop->results.omap_digest =
}
// be careful flushing omap to an EC pool.
- if (base_pool->is_erasure() &&
+ if (!base_pool->supports_omap() &&
obc->obs.oi.test_flag(object_info_t::FLAG_OMAP)) {
dout(20) << __func__ << " skip (omap to EC) " << obc->obs.oi << dendl;
osd->logger->inc(l_osd_agent_skip);
// also exclude omap objects if ec backing pool
const pg_pool_t *base_pool = get_osdmap()->get_pg_pool(pool.info.tier_of);
assert(base_pool);
- if (base_pool->is_erasure())
+ if (!base_pool->supports_omap())
unflushable += info.stats.stats.sum.num_objects_omap;
uint64_t num_user_objects = info.stats.stats.sum.num_objects;
// also reduce the num_dirty by num_objects_omap
int64_t num_dirty = info.stats.stats.sum.num_objects_dirty;
- if (base_pool->is_erasure()) {
+ if (!base_pool->supports_omap()) {
if (num_dirty > info.stats.stats.sum.num_objects_omap)
num_dirty -= info.stats.stats.sum.num_objects_omap;
else