summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2009-10-10 03:36:34 +0400
committerSage Weil <sage@newdream.net>2009-10-10 03:39:27 +0400
commit13e38c8ae771d73bf6d1f0f98e35f99c0f0d48ff (patch)
treecdc48759a7edc26e34b00cc0ddffc6ae58bafaf4
parent266673db423e6ab247170d6c6d72ec36e530a911 (diff)
downloadlinux-13e38c8ae771d73bf6d1f0f98e35f99c0f0d48ff.tar.xz
ceph: update to mon client protocol v15
The mon request headers now include session_mon information that must be properly initialized. Signed-off-by: Sage Weil <sage@newdream.net>
-rw-r--r--fs/ceph/ceph_fs.h19
-rw-r--r--fs/ceph/messenger.c2
-rw-r--r--fs/ceph/mon_client.c8
3 files changed, 19 insertions, 10 deletions
diff --git a/fs/ceph/ceph_fs.h b/fs/ceph/ceph_fs.h
index 21ed51b127f2..acf24c6944c7 100644
--- a/fs/ceph/ceph_fs.h
+++ b/fs/ceph/ceph_fs.h
@@ -37,10 +37,10 @@
*/
#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));
diff --git a/fs/ceph/messenger.c b/fs/ceph/messenger.c
index 63f7f1359385..b48abc0b3be7 100644
--- a/fs/ceph/messenger.c
+++ b/fs/ceph/messenger.c
@@ -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;
diff --git a/fs/ceph/mon_client.c b/fs/ceph/mon_client.c
index 9c34df17fa4b..dc698caccc42 100644
--- a/fs/ceph/mon_client.c
+++ b/fs/ceph/mon_client.c
@@ -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);