From: KotreshHR Date: Tue, 9 May 2023 03:12:40 +0000 (+0530) Subject: tools/ceph-dencoder: Add an option stray_okay X-Git-Tag: v20.3.0~377^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d4a93ce43ad26ddcbff1c66c8c1f725aefcb84a0;p=ceph.git tools/ceph-dencoder: Add an option stray_okay The ceph-dencoder tool fails to decode if the stray data is present at the end. Add an option 'stray_okay' to force the decode even if stray data is present at the end. Fixes: https://tracker.ceph.com/issues/69339 Signed-off-by: Kotresh HR --- diff --git a/src/tools/ceph-dencoder/ceph_dencoder.cc b/src/tools/ceph-dencoder/ceph_dencoder.cc index 24640f9b51d6..a7273622a29e 100644 --- a/src/tools/ceph-dencoder/ceph_dencoder.cc +++ b/src/tools/ceph-dencoder/ceph_dencoder.cc @@ -274,6 +274,12 @@ int main(int argc, const char **argv) return 0; else return 1; + } else if (*i == string("stray_okay")) { + if (!den) { + cerr << "must first select type with 'type '" << std::endl; + return 1; + } + den->set_stray_okay(); } else { cerr << "unknown option '" << *i << "'" << std::endl; return 1; diff --git a/src/tools/ceph-dencoder/denc_registry.h b/src/tools/ceph-dencoder/denc_registry.h index 61acc833b90e..4a24162ff1ef 100644 --- a/src/tools/ceph-dencoder/denc_registry.h +++ b/src/tools/ceph-dencoder/denc_registry.h @@ -29,6 +29,7 @@ struct Dencoder { virtual int num_generated() = 0; virtual std::string select_generated(unsigned n) = 0; virtual bool is_deterministic() = 0; + virtual void set_stray_okay() = 0; unsigned get_struct_v(bufferlist bl, uint64_t seek) const { auto p = bl.cbegin(seek); uint8_t struct_v = 0; @@ -98,6 +99,10 @@ public: bool is_deterministic() override { return !nondeterministic; } + + void set_stray_okay() { + stray_okay = true; + } }; template @@ -220,6 +225,8 @@ public: bool is_deterministic() override { return true; } + void set_stray_okay() override { + } //void print(ostream& out) { //out << m_object << std::endl;