From 510585b7951575d803848ff2f9b2396e28c98824 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Sat, 8 Feb 2014 14:04:14 -0800 Subject: [PATCH] PGBackend/ReplicatedBackend: factor out logical to ondisk size mapping Signed-off-by: Samuel Just --- src/osd/PGBackend.cc | 4 +++- src/osd/PGBackend.h | 2 ++ src/osd/ReplicatedBackend.h | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/osd/PGBackend.cc b/src/osd/PGBackend.cc index 80fca2a5cdce0..1b594f2a1c7c5 100644 --- a/src/osd/PGBackend.cc +++ b/src/osd/PGBackend.cc @@ -416,6 +416,7 @@ map::const_iterator << dendl; continue; } + bufferlist bl; bl.push_back(k->second); object_info_t oi; @@ -430,7 +431,8 @@ map::const_iterator // invalid object info, probably corrupt continue; } - if (oi.size != i->second.size) { + uint64_t correct_size = be_get_ondisk_size(oi.size); + if (correct_size != i->second.size) { // invalid size, probably corrupt dout(10) << __func__ << ": rejecting osd " << j->first << " for obj " << obj diff --git a/src/osd/PGBackend.h b/src/osd/PGBackend.h index aecd3ae078b44..9bc783a2fc85b 100644 --- a/src/osd/PGBackend.h +++ b/src/osd/PGBackend.h @@ -584,6 +584,8 @@ const vector &acting, ostream &errorstream); + virtual uint64_t be_get_ondisk_size( + uint64_t logical_size) { assert(0); return 0; } virtual void be_deep_scrub( const hobject_t &poid, ScrubMap::object &o, diff --git a/src/osd/ReplicatedBackend.h b/src/osd/ReplicatedBackend.h index 87022bb4632f3..0d29aed98f70e 100644 --- a/src/osd/ReplicatedBackend.h +++ b/src/osd/ReplicatedBackend.h @@ -407,6 +407,7 @@ private: const hobject_t &obj, ScrubMap::object &o, ThreadPool::TPHandle &handle); + uint64_t be_get_ondisk_size(uint64_t logical_size) { return logical_size; } }; #endif -- 2.39.5