]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
features,osd/: deprecate CEPH_FEATURE_OSD_REPOP feature bit
authorSamuel Just <sjust@redhat.com>
Mon, 14 Mar 2016 22:53:12 +0000 (15:53 -0700)
committerSamuel Just <sjust@redhat.com>
Thu, 17 Mar 2016 01:10:13 +0000 (18:10 -0700)
This allows us to rip out the code for supporting the old
repop format.  We can't actually reuse this bit until all
4 1<<46 bits are deprecated for one release.

Signed-off-by: Samuel Just <sjust@redhat.com>
src/include/ceph_features.h
src/osd/ReplicatedBackend.cc
src/osd/ReplicatedBackend.h

index b8cce878a91e20a33f469599aab09590a331cc7f..4e446ad39fc4fe6b7376a8a42752829067a1c604 100755 (executable)
@@ -61,7 +61,7 @@
 #define CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2 (1ULL<<44)
 #define DEPRECATED_CEPH_FEATURE_OSD_SET_ALLOC_HINT (1ULL<<45) // DEPRECATED: JEWEL
 #define CEPH_FEATURE_OSD_FADVISE_FLAGS (1ULL<<46)
-#define CEPH_FEATURE_OSD_REPOP         (1ULL<<46)   /* overlap with fadvise */
+#define DEPRECATED_CEPH_FEATURE_OSD_REPOP         (1ULL<<46) // DEPRECATED: JEWEL (can't remove until all 1<<46 are ready)
 #define CEPH_FEATURE_OSD_OBJECT_DIGEST  (1ULL<<46)  /* overlap with fadvise */
 #define CEPH_FEATURE_OSD_TRANSACTION_MAY_LAYOUT (1ULL<<46) /* overlap w/ fadvise */
 #define CEPH_FEATURE_MDS_QUOTA      (1ULL<<47)
@@ -162,7 +162,7 @@ static inline unsigned long long ceph_sanitize_features(unsigned long long f) {
          CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2 |   \
          DEPRECATED_CEPH_FEATURE_OSD_SET_ALLOC_HINT |   \
         CEPH_FEATURE_OSD_FADVISE_FLAGS |     \
-         CEPH_FEATURE_OSD_REPOP |   \
+         DEPRECATED_CEPH_FEATURE_OSD_REPOP |   \
         CEPH_FEATURE_OSD_OBJECT_DIGEST |    \
          CEPH_FEATURE_OSD_TRANSACTION_MAY_LAYOUT |   \
         CEPH_FEATURE_MDS_QUOTA | \
index 8ef60aaea45bea39a422a5233ec19d9189f67748..9d99356b6cb68bae6df9a772bf651895a8341b5f 100644 (file)
@@ -209,15 +209,11 @@ bool ReplicatedBackend::handle_message(
        return true;
       }
     }
-    else {
-      sub_op_modify_reply<MOSDSubOpReply, MSG_OSD_SUBOPREPLY>(op);
-      return true;
-    }
     break;
   }
 
   case MSG_OSD_REPOPREPLY: {
-    sub_op_modify_reply<MOSDRepOpReply, MSG_OSD_REPOPREPLY>(op);
+    sub_op_modify_reply(op);
     return true;
   }
 
@@ -668,13 +664,11 @@ void ReplicatedBackend::op_commit(
   }
 }
 
-template<typename T, int MSGTYPE>
 void ReplicatedBackend::sub_op_modify_reply(OpRequestRef op)
 {
-  T *r = static_cast<T *>(op->get_req());
+  MOSDRepOpReply *r = static_cast<MOSDRepOpReply *>(op->get_req());
   r->finish_decode();
-  assert(r->get_header().type == MSGTYPE);
-  assert(MSGTYPE == MSG_OSD_SUBOPREPLY || MSGTYPE == MSG_OSD_REPOPREPLY);
+  assert(r->get_header().type == MSG_OSD_REPOPREPLY);
 
   op->mark_started();
 
@@ -982,7 +976,6 @@ void ReplicatedBackend::do_push_reply(OpRequestRef op)
   send_pushes(m->get_priority(), _replies);
 }
 
-template<typename T, int MSGTYPE>
 Message * ReplicatedBackend::generate_subop(
   const hobject_t &soid,
   const eversion_t &at_version,
@@ -1000,9 +993,8 @@ Message * ReplicatedBackend::generate_subop(
   const pg_info_t &pinfo)
 {
   int acks_wanted = CEPH_OSD_FLAG_ACK | CEPH_OSD_FLAG_ONDISK;
-  assert(MSGTYPE == MSG_OSD_SUBOP || MSGTYPE == MSG_OSD_REPOP);
   // forward the write/update/whatever
-  T *wr = new T(
+  MOSDRepOp *wr = new MOSDRepOp(
     reqid, parent->whoami_shard(),
     spg_t(get_info().pgid.pgid, peer.shard),
     soid, acks_wanted,
@@ -1071,41 +1063,21 @@ void ReplicatedBackend::issue_op(
     const pg_info_t &pinfo = parent->get_shard_info().find(peer)->second;
 
     Message *wr;
-    uint64_t min_features = parent->min_peer_features();
-    if (!(min_features & CEPH_FEATURE_OSD_REPOP)) {
-      dout(20) << "Talking to old version of OSD, doesn't support RepOp, fall back to SubOp" << dendl;
-      wr = generate_subop<MOSDSubOp, MSG_OSD_SUBOP>(
-           soid,
-           at_version,
-           tid,
-           reqid,
-           pg_trim_to,
-           pg_trim_rollback_to,
-           new_temp_oid,
-           discard_temp_oid,
-           log_entries,
-           hset_hist,
-           op,
-           op_t,
-           peer,
-           pinfo);
-    } else {
-      wr = generate_subop<MOSDRepOp, MSG_OSD_REPOP>(
-           soid,
-           at_version,
-           tid,
-           reqid,
-           pg_trim_to,
-           pg_trim_rollback_to,
-           new_temp_oid,
-           discard_temp_oid,
-           log_entries,
-           hset_hist,
-           op,
-           op_t,
-           peer,
-           pinfo);
-    }
+    wr = generate_subop(
+      soid,
+      at_version,
+      tid,
+      reqid,
+      pg_trim_to,
+      pg_trim_rollback_to,
+      new_temp_oid,
+      discard_temp_oid,
+      log_entries,
+      hset_hist,
+      op,
+      op_t,
+      peer,
+      pinfo);
 
     get_parent()->send_message_osd_cluster(
       peer.osd, wr, get_osdmap()->get_epoch());
@@ -1113,26 +1085,12 @@ void ReplicatedBackend::issue_op(
 }
 
 // sub op modify
-void ReplicatedBackend::sub_op_modify(OpRequestRef op) {
-  Message *m = op->get_req();
-  int msg_type = m->get_type();
-  if (msg_type == MSG_OSD_SUBOP) {
-    sub_op_modify_impl<MOSDSubOp, MSG_OSD_SUBOP>(op);
-  } else if (msg_type == MSG_OSD_REPOP) {
-    sub_op_modify_impl<MOSDRepOp, MSG_OSD_REPOP>(op);
-  } else {
-    assert(0);
-  }
-}
-
-template<typename T, int MSGTYPE>
-void ReplicatedBackend::sub_op_modify_impl(OpRequestRef op)
+void ReplicatedBackend::sub_op_modify(OpRequestRef op)
 {
-  T *m = static_cast<T *>(op->get_req());
+  MOSDRepOp *m = static_cast<MOSDRepOp *>(op->get_req());
   m->finish_decode();
   int msg_type = m->get_type();
-  assert(MSGTYPE == msg_type);
-  assert(msg_type == MSG_OSD_SUBOP || msg_type == MSG_OSD_REPOP);
+  assert(MSG_OSD_REPOP == msg_type);
 
   const hobject_t& soid = m->poid;
 
index 7961aa4acffe62350d832631322c5119ea7fc224..ea4d509971206e307f75af208ad9492ec554228e 100644 (file)
@@ -361,7 +361,6 @@ public:
     );
 
 private:
-  template<typename T, int MSGTYPE>
   Message * generate_subop(
     const hobject_t &soid,
     const eversion_t &at_version,
@@ -392,11 +391,8 @@ private:
     ObjectStore::Transaction &op_t);
   void op_applied(InProgressOp *op);
   void op_commit(InProgressOp *op);
-  template<typename T, int MSGTYPE>
   void sub_op_modify_reply(OpRequestRef op);
   void sub_op_modify(OpRequestRef op);
-  template<typename T, int MSGTYPE>
-  void sub_op_modify_impl(OpRequestRef op);
 
   struct RepModify {
     OpRequestRef op;