The EC pool does not support omap content. If the caching/tiering agent
encounters such an object, just skip it. Use the OMAP object_info_t flag
for this.
Although legacy pools will have objects with omap that do not have this
flag set, no *cache* pools yet exist, so we do not need to worry about the
agent running across legacy content.
Signed-off-by: Sage Weil <sage@inktank.com>
<< ", pos " << agent_state->position
<< dendl;
+ const pg_pool_t *base_pool = get_osdmap()->get_pg_pool(pool.info.tier_of);
+ assert(base_pool);
+
int ls_min = 1;
int ls_max = 10; // FIXME?
continue;
}
+ // be careful flushing omap to an EC pool.
+ if (base_pool->is_erasure() &&
+ obc->obs.oi.test_flag(object_info_t::FLAG_OMAP)) {
+ dout(20) << __func__ << " skip (omap to EC) " << obc->obs.oi << dendl;
+ continue;
+ }
+
if (agent_state->flush_mode != TierAgentState::FLUSH_MODE_IDLE &&
agent_maybe_flush(obc))
++started;