OPTION(osd_debug_reject_backfill_probability, OPT_DOUBLE, 0)
OPTION(osd_debug_inject_copyfrom_error, OPT_BOOL, false) // inject failure during copyfrom completion
OPTION(osd_debug_randomize_hobject_sort_order, OPT_BOOL, false)
+OPTION(osd_debug_verify_cached_snaps, OPT_BOOL, false)
OPTION(osd_enable_op_tracker, OPT_BOOL, true) // enable/disable OSD op tracking
OPTION(osd_num_op_tracker_shard, OPT_U32, 32) // The number of shards for holding the ops
OPTION(osd_op_history_size, OPT_U32, 20) // Max number of completed ops to track
<< dendl;
update_osdmap_ref(osdmap);
pool.update(osdmap);
+ if (cct->_conf->osd_debug_verify_cached_snaps) {
+ interval_set<snapid_t> actual_removed_snaps;
+ const pg_pool_t *pi = osdmap->get_pg_pool(info.pgid.pool());
+ assert(pi);
+ pi->build_removed_snaps(actual_removed_snaps);
+ if (!(actual_removed_snaps == pool.cached_removed_snaps)) {
+ derr << __func__ << ": mismatch between the actual removed snaps "
+ << actual_removed_snaps << " and pool.cached_removed_snaps "
+ << " pool.cached_removed_snaps " << pool.cached_removed_snaps
+ << dendl;
+ }
+ assert(actual_removed_snaps == pool.cached_removed_snaps);
+ }
AdvMap evt(
osdmap, lastmap, newup, up_primary,
newacting, acting_primary);