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: v10.2.6~160^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b492c0089de858cfe2d7030eddd046acac6872ab;p=ceph.git PG::handle_advance_map: add debugging option to verify cached_removed_snaps Signed-off-by: Samuel Just (cherry picked from commit aeb8fef92469831d94f06db457a4ba15b5b0e3c5) --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index d74e8fe9dbac..78e67e2c8fc3 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -801,6 +801,7 @@ OPTION(osd_debug_skip_full_check_in_backfill_reservation, OPT_BOOL, false) 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 diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 7313bde02dcd..3e05d9217150 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -5586,6 +5586,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);