]> 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>
Wed, 4 Jan 2017 21:42:57 +0000 (13:42 -0800)
Signed-off-by: Samuel Just <sjust@redhat.com>
(cherry picked from commit aeb8fef92469831d94f06db457a4ba15b5b0e3c5)

src/common/config_opts.h
src/osd/PG.cc

index d74e8fe9dbacfdf961bec96329b54fb11af87c91..78e67e2c8fc3c0d942a8cfea53e5acb0dd59337e 100644 (file)
@@ -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
index 7313bde02dcd2a419a643fcf170f40f4a699a0d9..3e05d92171505dc47521f4a58ce0d392cf91b38b 100644 (file)
@@ -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<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);