]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: include version in mdsmap encoding
authorSage Weil <sage@newdream.net>
Mon, 20 Jul 2009 20:38:04 +0000 (13:38 -0700)
committerSage Weil <sage@newdream.net>
Mon, 20 Jul 2009 20:45:48 +0000 (13:45 -0700)
src/include/ceph_fs.h
src/kernel/mdsmap.c
src/mds/MDSMap.h

index 6242cf2b1908d0b5f73c2207314fa562fdb71228..48e2e11aaa8458d0df8765a8979972db6b40a0ab 100644 (file)
@@ -25,7 +25,7 @@
 #define CEPH_MDS_PROTOCOL     9 /* cluster internal */
 #define CEPH_MON_PROTOCOL     4 /* cluster internal */
 #define CEPH_OSDC_PROTOCOL   19 /* server/client */
-#define CEPH_MDSC_PROTOCOL   27 /* server/client */
+#define CEPH_MDSC_PROTOCOL   28 /* server/client */
 #define CEPH_MONC_PROTOCOL   14 /* server/client */
 
 
index e1a86ae28fc678139bba7d00253c6c926daa58b4..bc2b0c8779c4256568aa4ad51882533a5d0c5d1c 100644 (file)
@@ -50,12 +50,14 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
        struct ceph_mdsmap *m;
        int i, n;
        int err = -EINVAL;
+       u16 version;
 
        m = kzalloc(sizeof(*m), GFP_NOFS);
        if (m == NULL)
                return ERR_PTR(-ENOMEM);
 
-       ceph_decode_need(p, end, 8*sizeof(u32) + sizeof(u64), bad);
+       ceph_decode_need(p, end, sizeof(u16) + 8*sizeof(u32) + sizeof(u64),bad);
+       ceph_decode_16(p, version);
        ceph_decode_32(p, m->m_epoch);
        ceph_decode_32(p, m->m_client_epoch);
        ceph_decode_32(p, m->m_last_failure);
@@ -76,14 +78,17 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end)
                u32 namelen;
                s32 mds, inc, state;
                u64 state_seq;
+               u16 infoversion;
                struct ceph_entity_addr addr;
 
                ceph_decode_need(p, end, sizeof(addr) + sizeof(u32), bad);
                *p += sizeof(addr);  /* skip addr key */
                ceph_decode_32(p, namelen);
                *p += namelen;
-               ceph_decode_need(p, end, 6*sizeof(u32) + sizeof(addr) +
+               ceph_decode_need(p, end,
+                                sizeof(u16) + 6*sizeof(u32) + sizeof(addr) +
                                 sizeof(struct ceph_timespec), bad);
+               ceph_decode_16(p, infoversion);
                ceph_decode_32(p, mds);
                ceph_decode_32(p, inc);
                ceph_decode_32(p, state);
index 78d9eb7be47cd34376742bcdf2722d04090c080e..d56ba5883c8d32e13fa659dd6f23ea045a19bd36 100644 (file)
@@ -95,6 +95,8 @@ public:
     entity_inst_t get_inst() const { return entity_inst_t(entity_name_t::MDS(rank), addr); }
 
     void encode(bufferlist& bl) const {
+      __u16 v = 1;
+      ::encode(v, bl);
       ::encode(name, bl);
       ::encode(rank, bl);
       ::encode(inc, bl);
@@ -106,6 +108,8 @@ public:
       ::encode(standby_for_name, bl);
     }
     void decode(bufferlist::iterator& bl) {
+      __u16 v;
+      ::decode(v, bl);
       ::decode(name, bl);
       ::decode(rank, bl);
       ::decode(inc, bl);
@@ -369,6 +373,8 @@ public:
 
 
   void encode(bufferlist& bl) const {
+    __u16 v = 1;
+    ::encode(v, bl);
     ::encode(epoch, bl);
     ::encode(client_epoch, bl);
     ::encode(last_failure, bl);
@@ -393,6 +399,8 @@ public:
     ::encode(stopped, bl);
   }
   void decode(bufferlist::iterator& p) {
+    __u16 v;
+    ::decode(v, p);
     ::decode(epoch, p);
     ::decode(client_epoch, p);
     ::decode(last_failure, p);