]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
fix problem with long messages
authorsage weil <sage@skinny.ops.newdream.net>
Fri, 4 Jan 2008 20:03:51 +0000 (12:03 -0800)
committersage weil <sage@skinny.ops.newdream.net>
Fri, 4 Jan 2008 20:03:51 +0000 (12:03 -0800)
src/include/ceph_fs.h
src/kernel/messenger.h
src/msg/SimpleMessenger.cc

index dca8e6ebe1b396ef9f9e46c3f56a84d5a8d3e67e..e10b74be5927d34e8629607b27bac23cd1f56673 100644 (file)
@@ -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));
 
 
 /*
index c5318c561c1ca198ee1cef4bc78d08dee638682e..7b9a4e9db3c38ea9a01cf0a1e482830bc1dae698 100644 (file)
@@ -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);
 }
 
 
index 0317017fc28cf96d18a99f1a89145b825605266d..f514860696a0fdb41027baa841fccb67493f4df9 100644 (file)
@@ -22,7 +22,7 @@
 #include <sys/socket.h>
 #include <netinet/tcp.h>
 
-#include <asm/page.h>
+#include <sys/user.h>
 
 #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));