]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rados: Don't bother showing list-inconsistent-* errors that aren't set
authorDavid Zafman <dzafman@redhat.com>
Fri, 29 Apr 2016 18:25:18 +0000 (11:25 -0700)
committerDavid Zafman <dzafman@redhat.com>
Tue, 3 May 2016 19:11:56 +0000 (12:11 -0700)
Signed-off-by: David Zafman <dzafman@redhat.com>
src/tools/rados/rados.cc

index 945c3611163dcf258f954adc41f8e0275d4855c2..3fe6fdf086b72c35ae03527fd882510e4c057362 100644 (file)
@@ -1246,18 +1246,25 @@ static void dump_shard(const shard_info_t& shard,
                       const inconsistent_obj_t& inc,
                       Formatter &f)
 {
-  f.dump_bool("missing", shard.has_shard_missing());
   if (shard.has_shard_missing()) {
+    f.dump_bool("missing", shard.has_shard_missing());
     return;
   }
-  f.dump_bool("read_error", shard.has_read_error());
-  f.dump_bool("data_digest_mismatch", shard.has_data_digest_mismatch());
-  f.dump_bool("omap_digest_mismatch", shard.has_omap_digest_mismatch());
-  f.dump_bool("size_mismatch", shard.has_size_mismatch());
+  if (shard.has_read_error())
+    f.dump_bool("read_error", shard.has_read_error());
+  if (shard.has_data_digest_mismatch())
+    f.dump_bool("data_digest_mismatch", shard.has_data_digest_mismatch());
+  if (shard.has_omap_digest_mismatch())
+    f.dump_bool("omap_digest_mismatch", shard.has_omap_digest_mismatch());
+  if (shard.has_size_mismatch())
+    f.dump_bool("size_mismatch", shard.has_size_mismatch());
   if (!shard.has_read_error()) {
-    f.dump_bool("data_digest_mismatch_oi", shard.has_data_digest_mismatch_oi());
-    f.dump_bool("omap_digest_mismatch_oi", shard.has_omap_digest_mismatch_oi());
-    f.dump_bool("size_mismatch_oi", shard.has_size_mismatch_oi());
+    if (shard.has_data_digest_mismatch_oi())
+      f.dump_bool("data_digest_mismatch_oi", shard.has_data_digest_mismatch_oi());
+    if (shard.has_omap_digest_mismatch_oi())
+      f.dump_bool("omap_digest_mismatch_oi", shard.has_omap_digest_mismatch_oi());
+    if (shard.has_size_mismatch_oi())
+      f.dump_bool("size_mismatch_oi", shard.has_size_mismatch_oi());
   }
   f.dump_unsigned("size", shard.size);
   if (shard.omap_digest_present) {
@@ -1279,8 +1286,10 @@ static void dump_shard(const shard_info_t& shard,
     }
     f.close_section();
   }
-  f.dump_bool("attr_missing", shard.has_attr_missing());
-  f.dump_bool("attr_unexpected", shard.has_attr_unexpected());
+  if (shard.has_attr_missing())
+    f.dump_bool("attr_missing", shard.has_attr_missing());
+  if (shard.has_attr_unexpected())
+    f.dump_bool("attr_unexpected", shard.has_attr_unexpected());
 }
 
 static void dump_object_id(const object_id_t& object,
@@ -1308,13 +1317,20 @@ static void dump_inconsistent(const inconsistent_obj_t& inc,
   f.open_object_section("object");
   dump_object_id(inc.object, f);
   f.close_section();
-  f.dump_bool("missing", inc.has_shard_missing());
-  f.dump_bool("stat_err", inc.has_stat_error());
-  f.dump_bool("read_err", inc.has_read_error());
-  f.dump_bool("data_digest_mismatch", inc.has_data_digest_mismatch());
-  f.dump_bool("omap_digest_mismatch", inc.has_omap_digest_mismatch());
-  f.dump_bool("size_mismatch", inc.has_size_mismatch());
-  f.dump_bool("attr_mismatch", inc.has_attr_mismatch());
+  if (inc.has_shard_missing())
+    f.dump_bool("missing", inc.has_shard_missing());
+  if (inc.has_stat_error())
+    f.dump_bool("stat_err", inc.has_stat_error());
+  if (inc.has_read_error())
+    f.dump_bool("read_err", inc.has_read_error());
+  if (inc.has_data_digest_mismatch())
+    f.dump_bool("data_digest_mismatch", inc.has_data_digest_mismatch());
+  if (inc.has_omap_digest_mismatch())
+    f.dump_bool("omap_digest_mismatch", inc.has_omap_digest_mismatch());
+  if (inc.has_size_mismatch())
+    f.dump_bool("size_mismatch", inc.has_size_mismatch());
+  if (inc.has_attr_mismatch())
+    f.dump_bool("attr_mismatch", inc.has_attr_mismatch());
   f.open_array_section("shards");
   for (auto osd_shard : inc.shards) {
     f.open_object_section("shard");
@@ -1329,17 +1345,25 @@ static void dump_inconsistent(const inconsistent_snapset_t& inc,
                              Formatter &f)
 {
   dump_object_id(inc.object, f);
-  f.dump_bool("ss_attr_missing", inc.ss_attr_missing());
-  f.dump_bool("ss_attr_corrupted", inc.ss_attr_corrupted());
-  f.dump_bool("oi_attr_missing", inc.oi_attr_missing());
-  f.dump_bool("oi_attr_corrupted", inc.oi_attr_corrupted());
-  f.dump_bool("snapset_mismatch", inc.snapset_mismatch());
-  f.dump_bool("head_mismatch", inc.head_mismatch());
-  f.dump_bool("headless", inc.headless());
-  f.dump_bool("size_mismatch", inc.size_mismatch());
-
-  f.dump_bool("extra_clones", inc.extra_clones());
+  if (inc.ss_attr_missing())
+    f.dump_bool("ss_attr_missing", inc.ss_attr_missing());
+  if (inc.ss_attr_corrupted())
+    f.dump_bool("ss_attr_corrupted", inc.ss_attr_corrupted());
+  if (inc.oi_attr_missing())
+    f.dump_bool("oi_attr_missing", inc.oi_attr_missing());
+  if (inc.oi_attr_corrupted())
+    f.dump_bool("oi_attr_corrupted", inc.oi_attr_corrupted());
+  if (inc.snapset_mismatch())
+    f.dump_bool("snapset_mismatch", inc.snapset_mismatch());
+  if (inc.head_mismatch())
+    f.dump_bool("head_mismatch", inc.head_mismatch());
+  if (inc.headless())
+    f.dump_bool("headless", inc.headless());
+  if (inc.size_mismatch())
+    f.dump_bool("size_mismatch", inc.size_mismatch());
+
   if (inc.extra_clones()) {
+    f.dump_bool("extra_clones", inc.extra_clones());
     f.open_array_section("extra clones");
     for (auto snap : inc.clones) {
       f.dump_unsigned("snap", snap);
@@ -1347,8 +1371,8 @@ static void dump_inconsistent(const inconsistent_snapset_t& inc,
     f.close_section();
   }
 
-  f.dump_bool("clone_missing", inc.clone_missing());
   if (inc.clone_missing()) {
+    f.dump_bool("clone_missing", inc.clone_missing());
     f.open_array_section("missing");
     for (auto snap : inc.missing) {
       f.dump_unsigned("snap", snap);