ceph: update to mon client protocol v15
Sage Weil [Fri, 9 Oct 2009 23:36:34 +0000 (16:36 -0700)]
The mon request headers now include session_mon information that must
be properly initialized.

Signed-off-by: Sage Weil <sage@newdream.net>

fs/ceph/ceph_fs.h
fs/ceph/messenger.c
fs/ceph/mon_client.c

index 21ed51b..acf24c6 100644 (file)
  */
 #define CEPH_OSD_PROTOCOL     7 /* cluster internal */
 #define CEPH_MDS_PROTOCOL     9 /* cluster internal */
-#define CEPH_MON_PROTOCOL     4 /* cluster internal */
+#define CEPH_MON_PROTOCOL     5 /* cluster internal */
 #define CEPH_OSDC_PROTOCOL   20 /* server/client */
 #define CEPH_MDSC_PROTOCOL   29 /* server/client */
-#define CEPH_MONC_PROTOCOL   14 /* server/client */
+#define CEPH_MONC_PROTOCOL   15 /* server/client */
 
 
 #define CEPH_INO_ROOT  1
@@ -118,9 +118,14 @@ struct ceph_file_layout {
 #define CEPH_MSG_OSD_OP           42
 #define CEPH_MSG_OSD_OPREPLY      43
 
+struct ceph_mon_request_header {
+       __le64 have_version;
+       __le16 session_mon;
+       __le64 session_mon_tid;
+} __attribute__ ((packed));
 
 struct ceph_mon_statfs {
-       __le64 have_version;
+       struct ceph_mon_request_header monhdr;
        struct ceph_fsid fsid;
        __le64 tid;
 } __attribute__ ((packed));
@@ -138,22 +143,22 @@ struct ceph_mon_statfs_reply {
 } __attribute__ ((packed));
 
 struct ceph_osd_getmap {
-       __le64 have_version;
+       struct ceph_mon_request_header monhdr;
        struct ceph_fsid fsid;
        __le32 start;
 } __attribute__ ((packed));
 
 struct ceph_mds_getmap {
-       __le64 have_version;
+       struct ceph_mon_request_header monhdr;
        struct ceph_fsid fsid;
 } __attribute__ ((packed));
 
 struct ceph_client_mount {
-       __le64 have_version;
+       struct ceph_mon_request_header monhdr;
 } __attribute__ ((packed));
 
 struct ceph_mon_subscribe_item {
-       __le64 have;
+       __le64 have_version;    __le64 have;
        __u8 onetime;
 } __attribute__ ((packed));
 
index 63f7f13..b48abc0 100644 (file)
@@ -857,7 +857,7 @@ out:
 static int verify_hello(struct ceph_connection *con)
 {
        if (memcmp(con->in_banner, CEPH_BANNER, strlen(CEPH_BANNER))) {
-               pr_err("connect to/from %s has bad banner\n",
+               pr_err("connect to %s got bad banner\n",
                       pr_addr(&con->peer_addr.in_addr));
                con->error_msg = "protocol error, bad banner";
                return -1;
index 9c34df1..dc698ca 100644 (file)
@@ -273,7 +273,9 @@ static void __request_mount(struct ceph_mon_client *monc)
        if (IS_ERR(msg))
                return;
        h = msg->front.iov_base;
-       h->have_version = 0;
+       h->monhdr.have_version = 0;
+       h->monhdr.session_mon = cpu_to_le16(-1);
+       h->monhdr.session_mon_tid = 0;
        ceph_con_send(monc->con, msg);
 }
 
@@ -422,7 +424,9 @@ static int send_statfs(struct ceph_mon_client *monc,
                return PTR_ERR(msg);
        req->request = msg;
        h = msg->front.iov_base;
-       h->have_version = 0;
+       h->monhdr.have_version = 0;
+       h->monhdr.session_mon = cpu_to_le16(-1);
+       h->monhdr.session_mon_tid = 0;
        h->fsid = monc->monmap->fsid;
        h->tid = cpu_to_le64(req->tid);
        ceph_con_send(monc->con, msg);