From 2de29d2b81dd059bd6bccde11ee7ed89b0f6d135 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 23 Dec 2009 12:09:41 -0800 Subject: [PATCH] mds: change MClientReconnect encoding (mds protocol change) This simplifies the encoding to make life easier for the kclient. --- src/include/ceph_fs.h | 2 +- src/messages/MClientReconnect.h | 24 ++++++++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/include/ceph_fs.h b/src/include/ceph_fs.h index db3fed33c4aac..d0f2557bb41b6 100644 --- a/src/include/ceph_fs.h +++ b/src/include/ceph_fs.h @@ -39,7 +39,7 @@ #define CEPH_MDS_PROTOCOL 9 /* cluster internal */ #define CEPH_MON_PROTOCOL 5 /* cluster internal */ #define CEPH_OSDC_PROTOCOL 22 /* server/client */ -#define CEPH_MDSC_PROTOCOL 30 /* server/client */ +#define CEPH_MDSC_PROTOCOL 31 /* server/client */ #define CEPH_MONC_PROTOCOL 15 /* server/client */ diff --git a/src/messages/MClientReconnect.h b/src/messages/MClientReconnect.h index 1eefb5c73b3a4..27fd843b97473 100644 --- a/src/messages/MClientReconnect.h +++ b/src/messages/MClientReconnect.h @@ -20,7 +20,7 @@ class MClientReconnect : public Message { public: - __u8 closed; // true if this session was closed by the client. + bool closed; // true if this session was closed by the client. map caps; // only head inodes vector realms; @@ -49,15 +49,23 @@ public: } void encode_payload() { - ::encode(closed, payload); - ::encode(caps, payload); - ::encode(realms, payload); + if (!closed) { + ::encode(caps, data); + ::encode_nohead(realms, data); + } } void decode_payload() { - bufferlist::iterator p = payload.begin(); - ::decode(closed, p); - ::decode(caps, p); - ::decode(realms, p); + bufferlist::iterator p = data.begin(); + if (p.end()) { + closed = true; + } else { + closed = false; + ::decode(caps, p); + while (p.end()) { + realms.push_back(ceph_mds_snaprealm_reconnect()); + ::decode(realms.back(), p); + } + } } }; -- 2.39.5