From 273f6213ea9f637de896f4244622d0e8e4847bad Mon Sep 17 00:00:00 2001 From: David Zafman Date: Thu, 15 Mar 2018 17:09:43 -0700 Subject: [PATCH] osd rados command: Change "oi_attr" to "info" in scrub handling errors oi_attr_missing -> info_missing oi_attr_corrupted -> info_corrupted Signed-off-by: David Zafman --- doc/rados/command/list-inconsistent-obj.json | 8 ++--- doc/rados/command/list-inconsistent-snap.json | 4 +-- qa/standalone/scrub/osd-scrub-repair.sh | 24 ++++++------- qa/standalone/scrub/osd-scrub-snaps.sh | 2 +- src/common/scrub_types.cc | 8 ++--- src/common/scrub_types.h | 12 +++---- src/include/rados/rados_types.hpp | 34 ++++++++++++++----- src/osd/PGBackend.cc | 8 ++--- src/osd/PrimaryLogPG.cc | 6 ++-- src/tools/rados/rados.cc | 22 ++++++------ 10 files changed, 72 insertions(+), 56 deletions(-) diff --git a/doc/rados/command/list-inconsistent-obj.json b/doc/rados/command/list-inconsistent-obj.json index ba915b118092b..6e7fd5f35068c 100644 --- a/doc/rados/command/list-inconsistent-obj.json +++ b/doc/rados/command/list-inconsistent-obj.json @@ -65,8 +65,8 @@ "size_mismatch_oi", "ec_hash_error", "ec_size_error", - "oi_attr_missing", - "oi_attr_corrupted", + "info_missing", + "info_corrupted", "obj_size_oi_mismatch", "snapset_missing", "snapset_corrupted", @@ -138,8 +138,8 @@ "size_mismatch_oi", "ec_hash_error", "ec_size_error", - "oi_attr_missing", - "oi_attr_corrupted", + "info_missing", + "info_corrupted", "obj_size_oi_mismatch", "snapset_missing", "snapset_corrupted", diff --git a/doc/rados/command/list-inconsistent-snap.json b/doc/rados/command/list-inconsistent-snap.json index 30416c91b7774..76bb478cfafbc 100644 --- a/doc/rados/command/list-inconsistent-snap.json +++ b/doc/rados/command/list-inconsistent-snap.json @@ -42,8 +42,8 @@ "enum": [ "snapset_missing", "snapset_corrupted", - "oi_attr_missing", - "oi_attr_corrupted", + "info_missing", + "info_corrupted", "snapset_mismatch", "head_mismatch", "headless", diff --git a/qa/standalone/scrub/osd-scrub-repair.sh b/qa/standalone/scrub/osd-scrub-repair.sh index 592f0da1eae46..bcfeb3712960e 100755 --- a/qa/standalone/scrub/osd-scrub-repair.sh +++ b/qa/standalone/scrub/osd-scrub-repair.sh @@ -740,7 +740,7 @@ function TEST_corrupt_scrub_replicated() { } ], "errors": [ - "oi_attr_corrupted" + "info_corrupted" ], "osd": 0, "primary": false @@ -755,15 +755,15 @@ function TEST_corrupt_scrub_replicated() { } ], "errors": [ - "oi_attr_missing" + "info_missing" ], "osd": 1, "primary": true } ], "union_shard_errors": [ - "oi_attr_missing", - "oi_attr_corrupted" + "info_missing", + "info_corrupted" ], "errors": [], "object": { @@ -804,7 +804,7 @@ function TEST_corrupt_scrub_replicated() { ], "size": 7, "errors": [ - "oi_attr_missing" + "info_missing" ], "osd": 1, "primary": true @@ -812,7 +812,7 @@ function TEST_corrupt_scrub_replicated() { ], "selected_object_info": "3:30259878:::ROBJ15:head(47'46 osd.0.0:45 dirty|omap|data_digest s 7 uv 45 dd 2ddbf8f5 alloc_hint [0 0 0])", "union_shard_errors": [ - "oi_attr_missing" + "info_missing" ], "errors": [], "object": { @@ -1215,7 +1215,7 @@ EOF "omap_digest": "0x4f14f849", "size": 7, "errors": [ - "oi_attr_corrupted" + "info_corrupted" ], "osd": 0, "primary": false @@ -1232,15 +1232,15 @@ EOF "omap_digest": "0x4f14f849", "size": 7, "errors": [ - "oi_attr_missing" + "info_missing" ], "osd": 1, "primary": true } ], "union_shard_errors": [ - "oi_attr_missing", - "oi_attr_corrupted" + "info_missing", + "info_corrupted" ], "errors": [], "object": { @@ -1285,7 +1285,7 @@ EOF "omap_digest": "0x2d2a4d6e", "size": 7, "errors": [ - "oi_attr_missing" + "info_missing" ], "osd": 1, "primary": true @@ -1293,7 +1293,7 @@ EOF ], "selected_object_info": "3:30259878:::ROBJ15:head(47'46 osd.0.0:45 dirty|omap|data_digest s 7 uv 45 dd 2ddbf8f5 alloc_hint [0 0 0])", "union_shard_errors": [ - "oi_attr_missing" + "info_missing" ], "errors": [], "object": { diff --git a/qa/standalone/scrub/osd-scrub-snaps.sh b/qa/standalone/scrub/osd-scrub-snaps.sh index ff0293e5b4fd0..5c51fad31b198 100755 --- a/qa/standalone/scrub/osd-scrub-snaps.sh +++ b/qa/standalone/scrub/osd-scrub-snaps.sh @@ -271,7 +271,7 @@ function TEST_scrub_snaps() { }, { "errors": [ - "oi_attr_missing", + "info_missing", "headless" ], "snap": 7, diff --git a/src/common/scrub_types.cc b/src/common/scrub_types.cc index 9198009176110..11f0d8bcd9ad6 100644 --- a/src/common/scrub_types.cc +++ b/src/common/scrub_types.cc @@ -190,9 +190,9 @@ void inconsistent_snapset_wrapper::set_snapset_missing() errors |= inc_snapset_t::SNAPSET_MISSING; } -void inconsistent_snapset_wrapper::set_oi_attr_missing() +void inconsistent_snapset_wrapper::set_info_missing() { - errors |= inc_snapset_t::OI_MISSING; + errors |= inc_snapset_t::INFO_MISSING; } void inconsistent_snapset_wrapper::set_snapset_corrupted() @@ -200,9 +200,9 @@ void inconsistent_snapset_wrapper::set_snapset_corrupted() errors |= inc_snapset_t::SNAPSET_CORRUPTED; } -void inconsistent_snapset_wrapper::set_oi_attr_corrupted() +void inconsistent_snapset_wrapper::set_info_corrupted() { - errors |= inc_snapset_t::OI_CORRUPTED; + errors |= inc_snapset_t::INFO_CORRUPTED; } void inconsistent_snapset_wrapper::set_clone_missing(snapid_t snap) diff --git a/src/common/scrub_types.h b/src/common/scrub_types.h index e7c4ad97c219b..2f79fac3e3fc3 100644 --- a/src/common/scrub_types.h +++ b/src/common/scrub_types.h @@ -68,11 +68,11 @@ public: void set_ec_size_mismatch() { errors |= err_t::SHARD_EC_SIZE_MISMATCH; } - void set_oi_attr_missing() { - errors |= err_t::OI_ATTR_MISSING; + void set_info_missing() { + errors |= err_t::INFO_MISSING; } - void set_oi_attr_corrupted() { - errors |= err_t::OI_ATTR_CORRUPTED; + void set_info_corrupted() { + errors |= err_t::INFO_CORRUPTED; } void set_snapset_missing() { errors |= err_t::SNAPSET_MISSING; @@ -154,9 +154,9 @@ struct inconsistent_snapset_wrapper : public librados::inconsistent_snapset_t { // soid claims that it is a head or a snapdir, but its SS_ATTR // is missing. void set_snapset_missing(); - void set_oi_attr_missing(); + void set_info_missing(); void set_snapset_corrupted(); - void set_oi_attr_corrupted(); + void set_info_corrupted(); // snapset with missing clone void set_clone_missing(snapid_t); // Clones that are there diff --git a/src/include/rados/rados_types.hpp b/src/include/rados/rados_types.hpp index f5d89e5f1e67d..0f06e8157e0e0 100644 --- a/src/include/rados/rados_types.hpp +++ b/src/include/rados/rados_types.hpp @@ -60,8 +60,10 @@ struct err_t { SIZE_MISMATCH_OI = 1 << 11, SHARD_EC_HASH_MISMATCH = 1 << 12, SHARD_EC_SIZE_MISMATCH = 1 << 13, - OI_ATTR_MISSING = 1 << 14, - OI_ATTR_CORRUPTED = 1 << 15, + OI_ATTR_MISSING = 1 << 14, // Old + INFO_MISSING = 1 << 14, + OI_ATTR_CORRUPTED = 1 << 15, // Old + INFO_CORRUPTED = 1 << 15, SS_ATTR_MISSING = 1 << 16, // Old SNAPSET_MISSING = 1 << 16, SS_ATTR_CORRUPTED = 1 << 17, // Old @@ -72,7 +74,7 @@ struct err_t { // When adding more here add to either SHALLOW_ERRORS or DEEP_ERRORS }; uint64_t errors = 0; - static constexpr uint64_t SHALLOW_ERRORS = SHARD_MISSING|SHARD_STAT_ERR|SIZE_MISMATCH_OI|OI_ATTR_MISSING|OI_ATTR_CORRUPTED|SNAPSET_MISSING|SNAPSET_CORRUPTED|OBJ_SIZE_OI_MISMATCH|HINFO_MISSING|HINFO_CORRUPTED; + static constexpr uint64_t SHALLOW_ERRORS = SHARD_MISSING|SHARD_STAT_ERR|SIZE_MISMATCH_OI|INFO_MISSING|INFO_CORRUPTED|SNAPSET_MISSING|SNAPSET_CORRUPTED|OBJ_SIZE_OI_MISMATCH|HINFO_MISSING|HINFO_CORRUPTED; static constexpr uint64_t DEEP_ERRORS = SHARD_READ_ERR|DATA_DIGEST_MISMATCH_OI|OMAP_DIGEST_MISMATCH_OI|SHARD_EC_HASH_MISMATCH|SHARD_EC_SIZE_MISMATCH; bool has_shard_missing() const { return errors & SHARD_MISSING; @@ -98,12 +100,18 @@ struct err_t { bool has_ec_size_error() const { return errors & SHARD_EC_SIZE_MISMATCH; } - bool has_oi_attr_missing() const { + bool has_oi_attr_missing() const { // Compatibility return errors & OI_ATTR_MISSING; } - bool has_oi_attr_corrupted() const { + bool has_info_missing() const { + return errors & INFO_MISSING; + } + bool has_oi_attr_corrupted() const { // Compatibility return errors & OI_ATTR_CORRUPTED; } + bool has_info_corrupted() const { + return errors & INFO_CORRUPTED; + } bool has_ss_attr_missing() const { // Compatibility return errors & SS_ATTR_MISSING; } @@ -230,8 +238,10 @@ struct inconsistent_snapset_t { HEAD_MISMATCH = 1 << 4, HEADLESS_CLONE = 1 << 5, SIZE_MISMATCH = 1 << 6, - OI_MISSING = 1 << 7, - OI_CORRUPTED = 1 << 8, + OI_MISSING = 1 << 7, // Old + INFO_MISSING = 1 << 7, + OI_CORRUPTED = 1 << 8, // Old + INFO_CORRUPTED = 1 << 8, EXTRA_CLONES = 1 << 9, }; uint64_t errors = 0; @@ -267,12 +277,18 @@ struct inconsistent_snapset_t { bool size_mismatch() const { return errors & SIZE_MISMATCH; } - bool oi_attr_missing() const { + bool oi_attr_missing() const { // Compatibility return errors & OI_MISSING; } - bool oi_attr_corrupted() const { + bool info_missing() const { + return errors & INFO_MISSING; + } + bool oi_attr_corrupted() const { // Compatibility return errors & OI_CORRUPTED; } + bool info_corrupted() const { + return errors & INFO_CORRUPTED; + } bool extra_clones() const { return errors & EXTRA_CLONES; } diff --git a/src/osd/PGBackend.cc b/src/osd/PGBackend.cc index ff262c574421f..8e5da9178d71c 100644 --- a/src/osd/PGBackend.cc +++ b/src/osd/PGBackend.cc @@ -866,8 +866,8 @@ map::const_iterator k = i->second.attrs.find(OI_ATTR); if (k == i->second.attrs.end()) { // no object info on object, probably corrupt - shard_info.set_oi_attr_missing(); - error_string += " oi_attr_missing"; + shard_info.set_info_missing(); + error_string += " info_missing"; goto out; } bl.push_back(k->second); @@ -876,8 +876,8 @@ map::const_iterator decode(oi, bliter); } catch (...) { // invalid object info, probably corrupt - shard_info.set_oi_attr_corrupted(); - error_string += " oi_attr_corrupted"; + shard_info.set_info_corrupted(); + error_string += " info_corrupted"; goto out; } diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 911863d4e3ac4..d797c602bb5ca 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -14400,7 +14400,7 @@ void PrimaryLogPG::scrub_snapshot_metadata( osd->clog->error() << mode << " " << info.pgid << " " << soid << " no '" << OI_ATTR << "' attr"; ++scrubber.shallow_errors; - soid_error.set_oi_attr_missing(); + soid_error.set_info_missing(); } else { bufferlist bv; bv.push_back(p->second.attrs[OI_ATTR]); @@ -14412,8 +14412,8 @@ void PrimaryLogPG::scrub_snapshot_metadata( osd->clog->error() << mode << " " << info.pgid << " " << soid << " can't decode '" << OI_ATTR << "' attr " << e.what(); ++scrubber.shallow_errors; - soid_error.set_oi_attr_corrupted(); - soid_error.set_oi_attr_missing(); // Not available too + soid_error.set_info_corrupted(); + soid_error.set_info_missing(); // Not available too } } diff --git a/src/tools/rados/rados.cc b/src/tools/rados/rados.cc index 16e00a48acef7..37ef97f0cc738 100644 --- a/src/tools/rados/rados.cc +++ b/src/tools/rados/rados.cc @@ -1340,10 +1340,10 @@ static void dump_errors(const err_t &err, Formatter &f, const char *name) f.dump_string("error", "ec_hash_error"); if (err.has_ec_size_error()) f.dump_string("error", "ec_size_error"); - if (err.has_oi_attr_missing()) - f.dump_string("error", "oi_attr_missing"); - if (err.has_oi_attr_corrupted()) - f.dump_string("error", "oi_attr_corrupted"); + if (err.has_info_missing()) + f.dump_string("error", "info_missing"); + if (err.has_info_corrupted()) + f.dump_string("error", "info_corrupted"); if (err.has_obj_size_oi_mismatch()) f.dump_string("error", "obj_size_oi_mismatch"); if (err.has_snapset_missing()) @@ -1375,7 +1375,7 @@ static void dump_shard(const shard_info_t& shard, f.dump_format("data_digest", "0x%08x", shard.data_digest); } - if (!shard.has_oi_attr_missing() && !shard.has_oi_attr_corrupted() && + if (!shard.has_info_missing() && !shard.has_info_corrupted() && inc.has_object_info_inconsistency()) { object_info_t oi; bufferlist bl; @@ -1406,8 +1406,8 @@ static void dump_shard(const shard_info_t& shard, f.dump_stream("hashinfo") << hi; } if (inc.has_attr_name_mismatch() || inc.has_attr_value_mismatch() - || inc.union_shards.has_oi_attr_missing() - || inc.union_shards.has_oi_attr_corrupted() + || inc.union_shards.has_info_missing() + || inc.union_shards.has_info_corrupted() || inc.union_shards.has_snapset_missing() || inc.union_shards.has_snapset_corrupted() || inc.union_shards.has_hinfo_missing() @@ -1514,10 +1514,10 @@ static void dump_inconsistent(const inconsistent_snapset_t& inc, f.dump_string("error", "snapset_missing"); if (inc.snapset_corrupted()) f.dump_string("error", "snapset_corrupted"); - if (inc.oi_attr_missing()) - f.dump_string("error", "oi_attr_missing"); - if (inc.oi_attr_corrupted()) - f.dump_string("error", "oi_attr_corrupted"); + if (inc.info_missing()) + f.dump_string("error", "info_missing"); + if (inc.info_corrupted()) + f.dump_string("error", "info_corrupted"); if (inc.snapset_mismatch()) f.dump_string("error", "snapset_mismatch"); if (inc.head_mismatch()) -- 2.39.5