]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: add CEPH_FEATURE_EXPORT_PEER and bump the protocal version
authorYan, Zheng <zheng.z.yan@intel.com>
Fri, 6 Dec 2013 08:33:39 +0000 (16:33 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Mon, 16 Dec 2013 04:15:25 +0000 (12:15 +0800)
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/ceph_mds.cc
src/include/ceph_features.h
src/mds/MDS.h
src/mds/Server.cc
src/messages/MClientCaps.h

index 88b807b1b245109cf50826b8ba49a58f0442283c..03947581cd215dc5e035180600c2445678621f92 100644 (file)
@@ -244,7 +244,8 @@ int main(int argc, const char **argv)
     CEPH_FEATURE_NOSRCADDR |
     CEPH_FEATURE_DIRLAYOUTHASH |
     CEPH_FEATURE_PGID64 |
-    CEPH_FEATURE_MSG_AUTH;
+    CEPH_FEATURE_MSG_AUTH |
+    CEPH_FEATURE_EXPORT_PEER;
   uint64_t required =
     CEPH_FEATURE_OSDREPLYMUX;
   messenger->set_default_policy(Messenger::Policy::lossy_client(supported, required));
index 0ddf91f5d5cc2064324332e2729f9470e2f4eb3d..2d7960c0b436ec749d37f0ce95b5331c118fb30a 100644 (file)
@@ -41,6 +41,7 @@
 #define CEPH_FEATURE_OSD_PACKED_RECOVERY (1ULL<<34)
 #define CEPH_FEATURE_OSD_CACHEPOOL (1ULL<<35)
 #define CEPH_FEATURE_CRUSH_V2      (1ULL<<36)  /* new indep; SET_* steps */
+#define CEPH_FEATURE_EXPORT_PEER   (1ULL<<37)
 
 /*
  * The introduction of CEPH_FEATURE_OSD_SNAPMAPPER caused the feature
@@ -105,6 +106,7 @@ static inline unsigned long long ceph_sanitize_features(unsigned long long f) {
         CEPH_FEATURE_OSD_PACKED_RECOVERY | \
         CEPH_FEATURE_OSD_CACHEPOOL |       \
         CEPH_FEATURE_CRUSH_V2 |            \
+        CEPH_FEATURE_EXPORT_PEER |         \
         0ULL)
 
 #define CEPH_FEATURES_SUPPORTED_DEFAULT  CEPH_FEATURES_ALL
index 764b4e206b5c9f78bb3718cc9fdfc1d56489b630..2ab1eb1741c11d483b4b48559b31a40bbd1b03d1 100644 (file)
@@ -35,7 +35,7 @@
 #include "SessionMap.h"
 
 
-#define CEPH_MDS_PROTOCOL    19 /* cluster internal */
+#define CEPH_MDS_PROTOCOL    20 /* cluster internal */
 
 
 enum {
index a34b082e033f640a48bb3a0260e1e847713e320c..fa46636241b530be451189cbe85e62f763070a79 100644 (file)
@@ -271,7 +271,9 @@ void Server::flush_client_sessions(set<client_t>& client_set, C_GatherBuilder& g
   for (set<client_t>::iterator p = client_set.begin(); p != client_set.end(); ++p) {
     Session *session = mds->sessionmap.get_session(entity_name_t::CLIENT(p->v));
     assert(session);
-    if (session->is_stale())
+    if (session->is_stale() ||
+       !session->connection.get() ||
+       !session->connection->has_feature(CEPH_FEATURE_EXPORT_PEER))
       continue;
     version_t seq = session->wait_for_flush(gather.new_sub());
     mds->send_message_client(new MClientSession(CEPH_SESSION_FLUSHMSG, seq), session);
index 04a393d2c7f1e6444c29d964bae74c789f48f519..38487084cdcec17ecae462ccd1af8380734fce86 100644 (file)
@@ -175,7 +175,7 @@ public:
     head.xattr_len = xattrbl.length();
 
     // record peer in unused fields of cap export message
-    if (head.op == CEPH_CAP_OP_EXPORT)
+    if ((features & CEPH_FEATURE_EXPORT_PEER) && head.op == CEPH_CAP_OP_EXPORT)
       memcpy(&head.size, &peer, sizeof(peer));
 
     ::encode(head, payload);
@@ -191,7 +191,7 @@ public:
       return;
     }
 
-    if (true) {
+    if (features & CEPH_FEATURE_EXPORT_PEER) {
       if (head.op == CEPH_CAP_OP_IMPORT)
        ::encode(peer, payload);
     } else {