From: Samuel Just Date: Sun, 16 Feb 2014 03:08:13 +0000 (-0800) Subject: ReplicatedPG: fix size checking for ECBackend pools X-Git-Tag: v0.78~163^2~14 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ca323ff627d67ba923726b8b89ce49e8dc937b40;p=ceph.git ReplicatedPG: fix size checking for ECBackend pools Allow the backend to adjust the logical object size before checking against the ondisk size. Signed-off-by: Samuel Just --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 10382df50f5..2ee37a3fb0c 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -10880,16 +10880,19 @@ void ReplicatedPG::_scrub(ScrubMap& scrubmap) bv.push_back(p->second.attrs[OI_ATTR]); object_info_t oi(bv); - if (oi.size != p->second.size) { + if (pgbackend->be_get_ondisk_size(oi.size) != p->second.size) { osd->clog.error() << mode << " " << info.pgid << " " << soid << " on disk size (" << p->second.size - << ") does not match object info size (" << oi.size << ")"; + << ") does not match object info size (" + << oi.size << ") ajusted for ondisk to (" + << pgbackend->be_get_ondisk_size(oi.size) + << ")"; ++scrubber.shallow_errors; } dout(20) << mode << " " << soid << " " << oi << dendl; - stat.num_bytes += p->second.size; + stat.num_bytes += oi.size; if (oi.is_dirty()) ++stat.num_objects_dirty; @@ -10926,7 +10929,7 @@ void ReplicatedPG::_scrub(ScrubMap& scrubmap) assert(soid.snap == *curclone); } - assert(p->second.size == snapset.clone_size[*curclone]); + assert(oi.size == snapset.clone_size[*curclone]); // verify overlap? // ...