]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: encode object_info_t with features
authorSage Weil <sage@redhat.com>
Mon, 16 May 2016 14:11:15 +0000 (10:11 -0400)
committerSage Weil <sage@redhat.com>
Tue, 31 May 2016 19:32:11 +0000 (15:32 -0400)
In a few places, we encode oi with full features.

Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/ReplicatedPG.cc
src/osd/osd_types.cc
src/osd/osd_types.h
src/test/encoding/types.h
src/tools/RadosDump.h
src/tools/ceph_objectstore_tool.cc

index d671acf1bed04ad1e694a9f815381e9afe8a14f4..592ad210a452049a47461dce5f496f649a1f7122 100644 (file)
@@ -198,7 +198,7 @@ void ReplicatedPG::on_local_recover(
       recovery_info.oi.prior_version = recovery_info.oi.version;
       recovery_info.oi.version = latest->version;
       bufferlist bl;
-      ::encode(recovery_info.oi, bl);
+      ::encode(recovery_info.oi, bl, get_osdmap()->get_up_osd_features());
       assert(!pool.info.require_rollback());
       t->setattr(coll, ghobject_t(recovery_info.soid), OI_ATTR, bl);
       if (obc)
@@ -3494,7 +3494,7 @@ ReplicatedPG::OpContextUPtr ReplicatedPG::trim_object(const hobject_t &coid)
     coi.prior_version = coi.version;
     coi.version = ctx->at_version;
     bl.clear();
-    ::encode(coi, bl);
+    ::encode(coi, bl, get_osdmap()->get_up_osd_features());
     setattr_maybe_cache(ctx->obc, ctx.get(), t, OI_ATTR, bl);
 
     ctx->log.push_back(
@@ -3577,7 +3577,7 @@ ReplicatedPG::OpContextUPtr ReplicatedPG::trim_object(const hobject_t &coid)
     attrs[SS_ATTR].claim(bl);
 
     bl.clear();
-    ::encode(ctx->snapset_obc->obs.oi, bl);
+    ::encode(ctx->snapset_obc->obs.oi, bl, get_osdmap()->get_up_osd_features());
     attrs[OI_ATTR].claim(bl);
     setattrs_maybe_cache(ctx->snapset_obc, ctx.get(), t, attrs);
 
@@ -6267,7 +6267,7 @@ void ReplicatedPG::_make_clone(
   object_info_t *poi)
 {
   bufferlist bv;
-  ::encode(*poi, bv);
+  ::encode(*poi, bv, get_osdmap()->get_up_osd_features());
 
   t->clone(head, coid);
   setattr_maybe_cache(obc, ctx, t, OI_ATTR, bv);
@@ -6728,7 +6728,7 @@ void ReplicatedPG::finish_ctx(OpContext *ctx, int log_op_type, bool maintain_ssc
 
       map<string, bufferlist> attrs;
       bufferlist bv(sizeof(ctx->new_obs.oi));
-      ::encode(ctx->snapset_obc->obs.oi, bv);
+      ::encode(ctx->snapset_obc->obs.oi, bv, get_osdmap()->get_up_osd_features());
       ctx->op_t->touch(snapoid);
       attrs[OI_ATTR].claim(bv);
       attrs[SS_ATTR].claim(bss);
@@ -6774,7 +6774,7 @@ void ReplicatedPG::finish_ctx(OpContext *ctx, int log_op_type, bool maintain_ssc
 
     map <string, bufferlist> attrs;
     bufferlist bv(sizeof(ctx->new_obs.oi));
-    ::encode(ctx->new_obs.oi, bv);
+    ::encode(ctx->new_obs.oi, bv, get_osdmap()->get_up_osd_features());
     attrs[OI_ATTR].claim(bv);
 
     if (soid.snap == CEPH_NOSNAP) {
@@ -8874,7 +8874,7 @@ void ReplicatedPG::handle_watch_timeout(WatchRef watch)
   oi.prior_version = obc->obs.oi.version;
   oi.version = ctx->at_version;
   bufferlist bl;
-  ::encode(oi, bl);
+  ::encode(oi, bl, get_osdmap()->get_up_osd_features());
   setattr_maybe_cache(obc, ctx.get(), t, OI_ATTR, bl);
 
   if (pool.info.require_rollback()) {
@@ -9688,7 +9688,7 @@ ObjectContextRef ReplicatedPG::mark_object_lost(ObjectStore::Transaction *t,
   obc->obs.oi.prior_version = version;
 
   bufferlist b2;
-  obc->obs.oi.encode(b2);
+  obc->obs.oi.encode(b2, get_osdmap()->get_up_osd_features());
   assert(!pool.info.require_rollback());
   t->setattr(coll, ghobject_t(oid), OI_ATTR, b2);
 
@@ -10576,7 +10576,7 @@ uint64_t ReplicatedPG::recover_primary(uint64_t max, ThreadPool::TPHandle &handl
 
              ObjectStore::Transaction t;
              bufferlist b2;
-             obc->obs.oi.encode(b2);
+             obc->obs.oi.encode(b2, get_osdmap()->get_up_osd_features());
              assert(!pool.info.require_rollback());
              t.setattr(coll, ghobject_t(soid), OI_ATTR, b2);
 
@@ -11710,7 +11710,7 @@ void ReplicatedPG::hit_set_persist()
   bufferlist bss;
   ::encode(ctx->new_snapset, bss);
   bufferlist boi(sizeof(ctx->new_obs.oi));
-  ::encode(ctx->new_obs.oi, boi);
+  ::encode(ctx->new_obs.oi, boi, get_osdmap()->get_up_osd_features());
 
   ctx->op_t->append(oid, 0, bl.length(), bl, 0);
   map <string, bufferlist> attrs;
index 5c3ee93f305fa1d6bc3a024fd571110ef6d21dc2..802b41d222e8138a0cd0ab47b16ff2c291234597 100644 (file)
@@ -4691,7 +4691,7 @@ ps_t object_info_t::legacy_object_locator_to_ps(const object_t &oid,
   return ps;
 }
 
-void object_info_t::encode(bufferlist& bl) const
+void object_info_t::encode(bufferlist& bl, uint64_t features) const
 {
   object_locator_t myoloc(soid);
   map<entity_name_t, watch_info_t> old_watchers;
@@ -4942,7 +4942,7 @@ void ObjectRecoveryInfo::encode(bufferlist &bl, uint64_t features) const
   ::encode(soid, bl);
   ::encode(version, bl);
   ::encode(size, bl);
-  ::encode(oi, bl);
+  ::encode(oi, bl, features);
   ::encode(ss, bl);
   ::encode(copy_subset, bl);
   ::encode(clone_subset, bl);
index 9e82b315f7210e3571691b98dfd207b528edb982..5f8bb292a4d892f53b1ccdda68fead7c2b8aa267 100644 (file)
@@ -3321,7 +3321,7 @@ struct object_info_t {
     set_omap_digest(-1);
   }
 
-  void encode(bufferlist& bl) const;
+  void encode(bufferlist& bl, uint64_t features) const;
   void decode(bufferlist::iterator& bl);
   void decode(bufferlist& bl) {
     bufferlist::iterator p = bl.begin();
@@ -3351,7 +3351,7 @@ struct object_info_t {
     return *this;
   }
 };
-WRITE_CLASS_ENCODER(object_info_t)
+WRITE_CLASS_ENCODER_FEATURES(object_info_t)
 
 struct ObjectState {
   object_info_t oi;
index 15baa81a27bf6cd117d01dd2366f49459ced1937..87126a9edfade80b38b49103cb60af94db253a48 100644 (file)
@@ -78,7 +78,7 @@ TYPE(object_copy_cursor_t)
 TYPE_FEATUREFUL(object_copy_data_t)
 TYPE(pg_create_t)
 TYPE(watch_info_t)
-TYPE(object_info_t)
+TYPE_FEATUREFUL(object_info_t)
 TYPE(SnapSet)
 TYPE_FEATUREFUL(ObjectRecoveryInfo)
 TYPE(ObjectRecoveryProgress)
index 54cec998a0ac44e42bd3d08d89f0d7f909bf5a1a..15f53e6fa5b16fcf8b7e08ffd15c40cbb3784a00 100644 (file)
@@ -172,7 +172,7 @@ struct object_begin {
     ::encode(hoid.hobj, bl);
     ::encode(hoid.generation, bl);
     ::encode(hoid.shard_id, bl);
-    ::encode(oi, bl);
+    ::encode(oi, bl, -1);  /* FIXME: we always encode with full features */
     ENCODE_FINISH(bl);
   }
   void decode(bufferlist::iterator& bl) {
index 128bea14d248704e9b0c01aa2e7cfc9f6d99baa0..054a6b4b003b8b67dbc8537051da128b08a64e42 100644 (file)
@@ -1797,7 +1797,7 @@ struct do_fix_lost : public action_on_object_t {
         return 0;
       oi.clear_flag(object_info_t::FLAG_LOST);
       bufferlist bl;
-      ::encode(oi, bl);
+      ::encode(oi, bl, -1);  /* fixme: using full features */
       ObjectStore::Transaction t;
       t.setattr(coll, ghobj, OI_ATTR, bl);
       int r = store->apply_transaction(osr, std::move(t));
@@ -1969,7 +1969,7 @@ int set_size(ObjectStore *store, coll_t coll, ghobject_t &ghobj, uint64_t setsiz
   if (!dry_run) {
     attr.clear();
     oi.size = setsize;
-    ::encode(oi, attr);
+    ::encode(oi, attr, -1);  /* fixme: using full features */
     ObjectStore::Transaction t;
     t.setattr(coll, ghobj, OI_ATTR, attr);
     t.truncate(coll, ghobj, setsize);