"missing",
"stat_error",
"read_error",
- "data_digest_mismatch_oi",
- "omap_digest_mismatch_oi",
- "size_mismatch_oi",
+ "data_digest_mismatch_info",
+ "omap_digest_mismatch_info",
+ "size_mismatch_info",
"ec_hash_error",
"ec_size_error",
"info_missing",
"info_corrupted",
- "obj_size_oi_mismatch",
+ "obj_size_info_mismatch",
"snapset_missing",
"snapset_corrupted",
"hinfo_missing",
"missing",
"stat_error",
"read_error",
- "data_digest_mismatch_oi",
- "omap_digest_mismatch_oi",
- "size_mismatch_oi",
+ "data_digest_mismatch_info",
+ "omap_digest_mismatch_info",
+ "size_mismatch_info",
"ec_hash_error",
"ec_size_error",
"info_missing",
"info_corrupted",
- "obj_size_oi_mismatch",
+ "obj_size_info_mismatch",
"snapset_missing",
"snapset_corrupted",
"hinfo_missing",
"size_mismatch"
],
"union_shard_errors": [
- "data_digest_mismatch_oi",
- "size_mismatch_oi"
+ "data_digest_mismatch_info",
+ "size_mismatch_info"
],
"selected_object_info": "0:602f83fe:::foo:head(16'1 client.4110.0:1 dirty|data_digest|omap_digest s 968 uv 1 dd e978e67f od ffffffff alloc_hint [0 0 0])",
"shards": [
{
"osd": 2,
"errors": [
- "data_digest_mismatch_oi",
- "size_mismatch_oi"
+ "data_digest_mismatch_info",
+ "size_mismatch_info"
],
"size": 0,
"omap_digest": "0xffffffff",
``oi`` indicate a comparison with ``selected_object_info``. Look at the
``shards`` array to determine which shard has which error(s).
- * ``data_digest_mismatch_oi``: the digest stored in the object-info is not
+ * ``data_digest_mismatch_info``: the digest stored in the object-info is not
``0xffffffff``, which is calculated from the shard read from OSD.2
- * ``size_mismatch_oi``: the size stored in the object-info is different
+ * ``size_mismatch_info``: the size stored in the object-info is different
from the one read from OSD.2. The latter is 0.
You can repair the inconsistent placement group by executing::
{
"size": 9,
"errors": [
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"osd": 1,
"primary": true
],
"selected_object_info": "3:ce3f1d6a:::ROBJ1:head(47'54 osd.0.0:53 dirty|omap|data_digest s 7 uv 3 dd 2ddbf8f5 alloc_hint [0 0 0])",
"union_shard_errors": [
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"errors": [
"size_mismatch"
"object_info": "3:ffdb2004:::ROBJ9:head(47'60 osd.0.0:59 dirty|omap|data_digest s 7 uv 27 dd 2ddbf8f5 alloc_hint [0 0 0])",
"size": 1,
"errors": [
- "obj_size_oi_mismatch"
+ "obj_size_info_mismatch"
],
"osd": 1,
"primary": true
],
"selected_object_info": "3:ffdb2004:::ROBJ9:head(102'63 client.4433.0:1 dirty|omap|data_digest s 1 uv 67 dd 2b63260d alloc_hint [0 0 0])",
"union_shard_errors": [
- "obj_size_oi_mismatch"
+ "obj_size_info_mismatch"
],
"errors": [
"object_info_inconsistency"
"omap_digest": "0xf5fba2c6",
"size": 9,
"errors": [
- "data_digest_mismatch_oi",
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "data_digest_mismatch_info",
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"osd": 1,
"primary": true
],
"selected_object_info": "3:ce3f1d6a:::ROBJ1:head(47'54 osd.0.0:53 dirty|omap|data_digest s 7 uv 3 dd 2ddbf8f5 alloc_hint [0 0 0])",
"union_shard_errors": [
- "data_digest_mismatch_oi",
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "data_digest_mismatch_info",
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"errors": [
"data_digest_mismatch",
"omap_digest": "0xf8e11918",
"size": 7,
"errors": [
- "data_digest_mismatch_oi"
+ "data_digest_mismatch_info"
],
"osd": 0,
"primary": false
],
"selected_object_info": "3:e97ce31e:::ROBJ2:head(47'56 osd.0.0:55 dirty|omap|data_digest s 7 uv 6 dd 2ddbf8f5 alloc_hint [0 0 0])",
"union_shard_errors": [
- "data_digest_mismatch_oi"
+ "data_digest_mismatch_info"
],
"errors": [
"data_digest_mismatch"
"omap_digest": "0x2eecc539",
"size": 3,
"errors": [
- "obj_size_oi_mismatch"
+ "obj_size_info_mismatch"
],
"osd": 0,
"primary": false
],
"selected_object_info": "3:ffdb2004:::ROBJ9:head(122'64 client.4532.0:1 dirty|omap|data_digest s 3 uv 68 dd 1f26fb26 alloc_hint [0 0 0])",
"union_shard_errors": [
- "obj_size_oi_mismatch"
+ "obj_size_info_mismatch"
],
"errors": [
"object_info_inconsistency"
"size": 9,
"shard": 0,
"errors": [
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"osd": 1,
"primary": true
],
"selected_object_info": "3:9175b684:::EOBJ1:head(21'1 client.4179.0:1 dirty|data_digest s 7 uv 1 dd 2ddbf8f5 alloc_hint [0 0 0])",
"union_shard_errors": [
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"errors": [
"size_mismatch"
"size": 4096,
"shard": 0,
"errors": [
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"osd": 1,
"primary": true
],
"selected_object_info": "3:8549dfb5:::EOBJ5:head(65'7 client.4441.0:1 dirty|data_digest s 7 uv 7 dd 2ddbf8f5 alloc_hint [0 0 0])",
"union_shard_errors": [
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"errors": [
"size_mismatch"
"shard": 0,
"errors": [
"read_error",
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"osd": 1,
"primary": true
"selected_object_info": "3:9175b684:::EOBJ1:head(27'1 client.4155.0:1 dirty|data_digest s 7 uv 1 dd 2ddbf8f5 alloc_hint [0 0 0])",
"union_shard_errors": [
"read_error",
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"errors": [
"size_mismatch"
"omap_digest": "0xffffffff",
"size": 4096,
"errors": [
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"shard": 0,
"osd": 1,
],
"selected_object_info": "3:8549dfb5:::EOBJ5:head(65'7 client.4288.0:1 dirty|data_digest s 7 uv 7 dd 2ddbf8f5 alloc_hint [0 0 0])",
"union_shard_errors": [
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"errors": [
"size_mismatch"
"shard": 0,
"errors": [
"read_error",
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"osd": 1,
"primary": true
"selected_object_info": "3:9175b684:::EOBJ1:head(21'1 client.4179.0:1 dirty|data_digest s 7 uv 1 dd 2ddbf8f5 alloc_hint [0 0 0])",
"union_shard_errors": [
"read_error",
- "size_mismatch_oi",
- "obj_size_oi_mismatch"
+ "size_mismatch_info",
+ "obj_size_info_mismatch"
],
"errors": [
"size_mismatch"
"size": 4096,
"shard": 0,
"errors": [
- "size_mismatch_oi",
+ "size_mismatch_info",
"ec_size_error",
- "obj_size_oi_mismatch"
+ "obj_size_info_mismatch"
],
"osd": 1,
"primary": true
],
"selected_object_info": "3:8549dfb5:::EOBJ5:head(65'7 client.4441.0:1 dirty|data_digest s 7 uv 7 dd 2ddbf8f5 alloc_hint [0 0 0])",
"union_shard_errors": [
- "size_mismatch_oi",
+ "size_mismatch_info",
"ec_size_error",
- "obj_size_oi_mismatch"
+ "obj_size_info_mismatch"
],
"errors": [
"size_mismatch"
void set_missing() {
errors |= err_t::SHARD_MISSING;
}
- void set_omap_digest_mismatch_oi() {
- errors |= err_t::OMAP_DIGEST_MISMATCH_OI;
+ void set_omap_digest_mismatch_info() {
+ errors |= err_t::OMAP_DIGEST_MISMATCH_INFO;
}
- void set_size_mismatch_oi() {
- errors |= err_t::SIZE_MISMATCH_OI;
+ void set_size_mismatch_info() {
+ errors |= err_t::SIZE_MISMATCH_INFO;
}
- void set_data_digest_mismatch_oi() {
- errors |= err_t::DATA_DIGEST_MISMATCH_OI;
+ void set_data_digest_mismatch_info() {
+ errors |= err_t::DATA_DIGEST_MISMATCH_INFO;
}
void set_read_error() {
errors |= err_t::SHARD_READ_ERR;
void set_snapset_corrupted() {
errors |= err_t::SNAPSET_CORRUPTED;
}
- void set_obj_size_oi_mismatch() {
- errors |= err_t::OBJ_SIZE_OI_MISMATCH;
+ void set_obj_size_info_mismatch() {
+ errors |= err_t::OBJ_SIZE_INFO_MISMATCH;
}
void set_hinfo_missing() {
errors |= err_t::HINFO_MISSING;
SHARD_MISSING = 1 << 1,
SHARD_STAT_ERR = 1 << 2,
SHARD_READ_ERR = 1 << 3,
- DATA_DIGEST_MISMATCH_OI = 1 << 9,
- OMAP_DIGEST_MISMATCH_OI = 1 << 10,
- SIZE_MISMATCH_OI = 1 << 11,
+ DATA_DIGEST_MISMATCH_OI = 1 << 9, // Old
+ DATA_DIGEST_MISMATCH_INFO = 1 << 9,
+ OMAP_DIGEST_MISMATCH_OI = 1 << 10, // Old
+ OMAP_DIGEST_MISMATCH_INFO = 1 << 10,
+ SIZE_MISMATCH_OI = 1 << 11, // Old
+ SIZE_MISMATCH_INFO = 1 << 11,
SHARD_EC_HASH_MISMATCH = 1 << 12,
SHARD_EC_SIZE_MISMATCH = 1 << 13,
OI_ATTR_MISSING = 1 << 14, // Old
SNAPSET_MISSING = 1 << 16,
SS_ATTR_CORRUPTED = 1 << 17, // Old
SNAPSET_CORRUPTED = 1 << 17,
- OBJ_SIZE_OI_MISMATCH = 1 << 18,
+ OBJ_SIZE_OI_MISMATCH = 1 << 18, // Old
+ OBJ_SIZE_INFO_MISMATCH = 1 << 18,
HINFO_MISSING = 1 << 19,
HINFO_CORRUPTED = 1 << 20
// 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|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;
+ static constexpr uint64_t SHALLOW_ERRORS = SHARD_MISSING|SHARD_STAT_ERR|SIZE_MISMATCH_INFO|INFO_MISSING|INFO_CORRUPTED|SNAPSET_MISSING|SNAPSET_CORRUPTED|OBJ_SIZE_INFO_MISMATCH|HINFO_MISSING|HINFO_CORRUPTED;
+ static constexpr uint64_t DEEP_ERRORS = SHARD_READ_ERR|DATA_DIGEST_MISMATCH_INFO|OMAP_DIGEST_MISMATCH_INFO|SHARD_EC_HASH_MISMATCH|SHARD_EC_SIZE_MISMATCH;
bool has_shard_missing() const {
return errors & SHARD_MISSING;
}
bool has_read_error() const {
return errors & SHARD_READ_ERR;
}
- bool has_data_digest_mismatch_oi() const {
+ bool has_data_digest_mismatch_oi() const { // Compatibility
return errors & DATA_DIGEST_MISMATCH_OI;
}
- bool has_omap_digest_mismatch_oi() const {
+ bool has_data_digest_mismatch_info() const {
+ return errors & DATA_DIGEST_MISMATCH_INFO;
+ }
+ bool has_omap_digest_mismatch_oi() const { // Compatibility
return errors & OMAP_DIGEST_MISMATCH_OI;
}
- bool has_size_mismatch_oi() const {
+ bool has_omap_digest_mismatch_info() const {
+ return errors & OMAP_DIGEST_MISMATCH_INFO;
+ }
+ bool has_size_mismatch_oi() const { // Compatibility
return errors & SIZE_MISMATCH_OI;
}
+ bool has_size_mismatch_info() const {
+ return errors & SIZE_MISMATCH_INFO;
+ }
bool has_ec_hash_error() const {
return errors & SHARD_EC_HASH_MISMATCH;
}
bool has_deep_errors() const {
return errors & DEEP_ERRORS;
}
- bool has_obj_size_oi_mismatch() const {
+ bool has_obj_size_oi_mismatch() const { // Compatibility
return errors & OBJ_SIZE_OI_MISMATCH;
+ }
+ bool has_obj_size_info_mismatch() const {
+ return errors & OBJ_SIZE_INFO_MISMATCH;
}
bool has_hinfo_missing() const {
return errors & HINFO_MISSING;
errorstream << "data_digest 0x" << std::hex << candidate.digest
<< " != data_digest 0x" << auth_oi.data_digest << std::dec
<< " from auth oi " << auth_oi;
- shard_result.set_data_digest_mismatch_oi();
+ shard_result.set_data_digest_mismatch_info();
}
}
if (auth_oi.is_omap_digest() && candidate.omap_digest_present) {
errorstream << "omap_digest 0x" << std::hex << candidate.omap_digest
<< " != omap_digest 0x" << auth_oi.omap_digest << std::dec
<< " from auth oi " << auth_oi;
- shard_result.set_omap_digest_mismatch_oi();
+ shard_result.set_omap_digest_mismatch_info();
}
}
}
errorstream << "size " << candidate.size
<< " != size " << oi_size
<< " from auth oi " << auth_oi;
- shard_result.set_size_mismatch_oi();
+ shard_result.set_size_mismatch_info();
}
if (auth.size != candidate.size) {
if (error != CLEAN)
if (i->second.size != be_get_ondisk_size(oi.size)) {
dout(5) << __func__ << " size " << i->second.size << " oi size " << oi.size << dendl;
- shard_info.set_obj_size_oi_mismatch();
- error_string += " obj_size_oi_mismatch";
+ shard_info.set_obj_size_info_mismatch();
+ error_string += " obj_size_info_mismatch";
}
// Don't use this particular shard due to previous errors
// recorded digest != actual digest?
if (auth_oi.is_data_digest() && auth_object.digest_present &&
auth_oi.data_digest != auth_object.digest) {
- assert(shard_map[auth->first].has_data_digest_mismatch_oi());
+ assert(shard_map[auth->first].has_data_digest_mismatch_info());
errorstream << pgid << " recorded data digest 0x"
<< std::hex << auth_oi.data_digest << " != on disk 0x"
<< auth_object.digest << std::dec << " on " << auth_oi.soid
}
if (auth_oi.is_omap_digest() && auth_object.omap_digest_present &&
auth_oi.omap_digest != auth_object.omap_digest) {
- assert(shard_map[auth->first].has_omap_digest_mismatch_oi());
+ assert(shard_map[auth->first].has_omap_digest_mismatch_info());
errorstream << pgid << " recorded omap digest 0x"
<< std::hex << auth_oi.omap_digest << " != on disk 0x"
<< auth_object.omap_digest << std::dec
f.dump_string("error", "stat_error");
if (err.has_read_error())
f.dump_string("error", "read_error");
- if (err.has_data_digest_mismatch_oi())
- f.dump_string("error", "data_digest_mismatch_oi");
- if (err.has_omap_digest_mismatch_oi())
- f.dump_string("error", "omap_digest_mismatch_oi");
- if (err.has_size_mismatch_oi())
- f.dump_string("error", "size_mismatch_oi");
+ if (err.has_data_digest_mismatch_info())
+ f.dump_string("error", "data_digest_mismatch_info");
+ if (err.has_omap_digest_mismatch_info())
+ f.dump_string("error", "omap_digest_mismatch_info");
+ if (err.has_size_mismatch_info())
+ f.dump_string("error", "size_mismatch_info");
if (err.has_ec_hash_error())
f.dump_string("error", "ec_hash_error");
if (err.has_ec_size_error())
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_obj_size_info_mismatch())
+ f.dump_string("error", "obj_size_info_mismatch");
if (err.has_snapset_missing())
f.dump_string("error", "snapset_missing");
if (err.has_snapset_corrupted())