From: Sage Weil Date: Wed, 28 Nov 2018 22:11:25 +0000 (-0600) Subject: osd/osd_types: pool_opts_t: make encoding feature-dependent X-Git-Tag: v14.1.0~582^2~14 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f94e7da36405a178656559d4f5b9f8776f39ce98;p=ceph.git osd/osd_types: pool_opts_t: make encoding feature-dependent No functional change (yet). Signed-off-by: Sage Weil --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 102c3a80dff..d89265d4919 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -1190,7 +1190,7 @@ void pool_opts_t::dump(Formatter* f) const class pool_opts_encoder_t : public boost::static_visitor<> { public: - explicit pool_opts_encoder_t(bufferlist& bl_) : bl(bl_) {} + explicit pool_opts_encoder_t(bufferlist& bl_, uint64_t features) : bl(bl_) {} void operator()(const std::string &s) const { encode(static_cast(pool_opts_t::STR), bl); @@ -1209,18 +1209,20 @@ private: bufferlist& bl; }; -void pool_opts_t::encode(bufferlist& bl) const { +void pool_opts_t::encode(bufferlist& bl, uint64_t features) const +{ ENCODE_START(1, 1, bl); uint32_t n = static_cast(opts.size()); encode(n, bl); for (opts_t::const_iterator i = opts.begin(); i != opts.end(); ++i) { encode(static_cast(i->first), bl); - boost::apply_visitor(pool_opts_encoder_t(bl), i->second); + boost::apply_visitor(pool_opts_encoder_t(bl, features), i->second); } ENCODE_FINISH(bl); } -void pool_opts_t::decode(bufferlist::const_iterator& bl) { +void pool_opts_t::decode(bufferlist::const_iterator& bl) +{ DECODE_START(1, bl); __u32 n; decode(n, bl); @@ -1776,7 +1778,7 @@ void pg_pool_t::encode(bufferlist& bl, uint64_t features) const encode(hit_set_search_last_n, bl); } if (v >= 24) { - encode(opts, bl); + encode(opts, bl, features); } if (v >= 25) { encode(last_force_op_resend_prenautilus, bl); diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 3b48e4d567e..6f34202d505 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -1061,7 +1061,7 @@ public: void dump(const std::string& name, Formatter *f) const; void dump(Formatter *f) const; - void encode(bufferlist &bl) const; + void encode(bufferlist &bl, uint64_t features) const; void decode(bufferlist::const_iterator &bl); private: @@ -1070,7 +1070,7 @@ private: friend ostream& operator<<(ostream& out, const pool_opts_t& opts); }; -WRITE_CLASS_ENCODER(pool_opts_t) +WRITE_CLASS_ENCODER_FEATURES(pool_opts_t) /* * pg_pool