]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
PG::handle_advance_map: add debugging option to verify cached_removed_snaps
authorSamuel Just <sjust@redhat.com>
Mon, 12 Dec 2016 18:33:13 +0000 (10:33 -0800)
committerSamuel Just <sjust@redhat.com>
Thu, 15 Dec 2016 18:50:49 +0000 (10:50 -0800)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/common/config_opts.h
src/osd/PG.cc

index 9479e07a96d8c266b364e56ed129afc7a21752b9..5a77f037cb81ed4195bd17d717d4df63da01c92c 100644 (file)
@@ -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
index b12e099614c1c8b8178a37e6288162813e156240..e02b07756decab9fa69866e3f2498f8c79e305d3 100644 (file)
@@ -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<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);