From: Samuel Just Date: Mon, 12 Dec 2016 18:33:13 +0000 (-0800) Subject: PG::handle_advance_map: add debugging option to verify cached_removed_snaps X-Git-Tag: v11.1.1~17^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=aeb8fef92469831d94f06db457a4ba15b5b0e3c5;p=ceph.git PG::handle_advance_map: add debugging option to verify cached_removed_snaps Signed-off-by: Samuel Just --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 9479e07a96d..5a77f037cb8 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -841,6 +841,7 @@ 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_misdirected_ops, 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 diff --git a/src/osd/PG.cc b/src/osd/PG.cc index b12e099614c..e02b07756de 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -5694,6 +5694,19 @@ void PG::handle_advance_map( << dendl; update_osdmap_ref(osdmap); pool.update(osdmap); + if (cct->_conf->osd_debug_verify_cached_snaps) { + interval_set 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);