From f405e16358106fde97561b867dc5186776931c75 Mon Sep 17 00:00:00 2001 From: sage weil Date: Fri, 4 Jan 2008 12:03:51 -0800 Subject: [PATCH] fix problem with long messages --- src/include/ceph_fs.h | 6 +++--- src/kernel/messenger.h | 12 ++++++------ src/msg/SimpleMessenger.cc | 7 +++++-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/include/ceph_fs.h b/src/include/ceph_fs.h index dca8e6ebe1b39..e10b74be5927d 100644 --- a/src/include/ceph_fs.h +++ b/src/include/ceph_fs.h @@ -227,10 +227,10 @@ struct ceph_msg_header { __u32 seq; /* message seq# for this session */ __u32 type; /* message type */ struct ceph_entity_inst src, dst; - __u16 front_len; - __u16 data_off; /* sender: include full offset; receiver: mask against PAGE_MASK */ + __u32 front_len; + __u32 data_off; /* sender: include full offset; receiver: mask against PAGE_MASK */ __u32 data_len; /* bytes of data payload */ -}; +} __attribute__ ((packed)); /* diff --git a/src/kernel/messenger.h b/src/kernel/messenger.h index c5318c561c1ca..7b9a4e9db3c38 100644 --- a/src/kernel/messenger.h +++ b/src/kernel/messenger.h @@ -199,9 +199,9 @@ static __inline__ void ceph_encode_header(struct ceph_msg_header *to, struct cep to->type = cpu_to_le32(from->type); ceph_encode_inst(&to->src, &from->src); ceph_encode_inst(&to->dst, &from->dst); - to->front_len = cpu_to_le16(from->front_len); - to->data_off = cpu_to_le16(from->data_off); - to->data_len = cpu_to_le16(from->data_len); + to->front_len = cpu_to_le32(from->front_len); + to->data_off = cpu_to_le32(from->data_off); + to->data_len = cpu_to_le32(from->data_len); } static __inline__ void ceph_decode_header(struct ceph_msg_header *to) { @@ -209,9 +209,9 @@ static __inline__ void ceph_decode_header(struct ceph_msg_header *to) to->type = cpu_to_le32(to->type); ceph_decode_inst(&to->src); ceph_decode_inst(&to->dst); - to->front_len = cpu_to_le16(to->front_len); - to->data_off = cpu_to_le16(to->data_off); - to->data_len = cpu_to_le16(to->data_len); + to->front_len = cpu_to_le32(to->front_len); + to->data_off = cpu_to_le32(to->data_off); + to->data_len = cpu_to_le32(to->data_len); } diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc index 0317017fc28cf..f514860696a0f 100644 --- a/src/msg/SimpleMessenger.cc +++ b/src/msg/SimpleMessenger.cc @@ -22,7 +22,7 @@ #include #include -#include +#include #include "config.h" @@ -124,8 +124,11 @@ int Rank::Accepter::start() sockaddr_in listen_addr = g_my_addr.v.ipaddr; /* socket creation */ - listen_sd = socket(AF_INET, SOCK_STREAM, 0); + listen_sd = ::socket(AF_INET, SOCK_STREAM, 0); assert(listen_sd > 0); + + int on = 1; + ::setsockopt(listen_sd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); /* bind to port */ int rc = ::bind(listen_sd, (struct sockaddr *) &listen_addr, sizeof(listen_addr)); -- 2.39.5