From 4e4e562926d38371f70ba2cf2f7003daa251b9f0 Mon Sep 17 00:00:00 2001 From: David Zafman Date: Fri, 29 Apr 2016 11:26:39 -0700 Subject: [PATCH] include, rados: Fixes for list-inconsistent-obj and librados Signed-off-by: David Zafman (cherry picked from commit 4fc4326b36aa00092043514746aa39aedad06b0f) --- src/common/scrub_types.h | 4 ++-- src/include/rados/rados_types.hpp | 9 ++++++++- src/tools/rados/rados.cc | 2 ++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/common/scrub_types.h b/src/common/scrub_types.h index c9f4fda90c268..ed45e0872b808 100644 --- a/src/common/scrub_types.h +++ b/src/common/scrub_types.h @@ -51,13 +51,13 @@ public: errors |= err_t::SIZE_MISMATCH; } void set_attr_missing() { - errors |= err_t::ATTR_MISMATCH; + errors |= err_t::ATTR_MISSING; } void set_attr_mismatch() { errors |= err_t::ATTR_MISMATCH; } void set_attr_unexpected() { - errors |= err_t::ATTR_MISMATCH; + errors |= err_t::ATTR_UNEXPECTED; } void encode(bufferlist& bl) const; void decode(bufferlist::iterator& bp); diff --git a/src/include/rados/rados_types.hpp b/src/include/rados/rados_types.hpp index d10e5f5b109f2..c4f268d49889f 100644 --- a/src/include/rados/rados_types.hpp +++ b/src/include/rados/rados_types.hpp @@ -52,6 +52,7 @@ struct object_id_t { struct err_t { enum { + ATTR_UNEXPECTED = 1 << 0, SHARD_MISSING = 1 << 1, SHARD_STAT_ERR = 1 << 2, SHARD_READ_ERR = 1 << 3, @@ -59,12 +60,15 @@ struct err_t { OMAP_DIGEST_MISMATCH = 1 << 5, SIZE_MISMATCH = 1 << 6, ATTR_MISMATCH = 1 << 7, - SNAPSET_MISSING = 1 << 8, + ATTR_MISSING = 1 << 8, DATA_DIGEST_MISMATCH_OI = 1 << 9, OMAP_DIGEST_MISMATCH_OI = 1 << 10, SIZE_MISMATCH_OI = 1 << 11, }; uint64_t errors = 0; + bool has_attr_unexpected() const { + return errors & ATTR_UNEXPECTED; + } bool has_shard_missing() const { return errors & SHARD_MISSING; } @@ -97,6 +101,9 @@ struct err_t { bool has_attr_mismatch() const { return errors & ATTR_MISMATCH; } + bool has_attr_missing() const { + return errors & ATTR_MISSING; + } }; struct shard_info_t : err_t { diff --git a/src/tools/rados/rados.cc b/src/tools/rados/rados.cc index 8c346eab0a317..bdd6a33c31484 100644 --- a/src/tools/rados/rados.cc +++ b/src/tools/rados/rados.cc @@ -1279,6 +1279,8 @@ 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()); } static void dump_object_id(const object_id_t& object, -- 2.39.5