[sheepdog] [PATCH] proto: move addr and port to common header

Ruoyu liangry at ucweb.com
Thu Jul 3 05:15:31 CEST 2014


It is worth to do it because these two attributes are not specific
to every request type.

recovery.c and object_list_cache.c are also updated because of the
change. Later patch will apply it, too.

Signed-off-by: Ruoyu <liangry at ucweb.com>
---
 include/sheepdog_proto.h  | 20 ++++++++++----------
 sheep/object_list_cache.c |  4 ++--
 sheep/recovery.c          |  5 ++---
 3 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/include/sheepdog_proto.h b/include/sheepdog_proto.h
index 76fad51..79035ae 100644
--- a/include/sheepdog_proto.h
+++ b/include/sheepdog_proto.h
@@ -122,16 +122,18 @@
 
 #define STORE_LEN 16
 
-#define SD_REQ_SIZE 48
-#define SD_RSP_SIZE 48
+#define SD_REQ_SIZE 72
+#define SD_RSP_SIZE 72
 
 struct sd_req {
 	uint8_t		proto_ver;
 	uint8_t		opcode;
 	uint16_t	flags;
 	uint32_t	epoch;
-	uint32_t        id;
-	uint32_t        data_length;
+	uint32_t	id;
+	uint32_t	data_length;
+	uint8_t		addr[16];
+	uint16_t	port;
 	union {
 		struct {
 			uint64_t	oid;
@@ -176,10 +178,6 @@ struct sd_req {
 			uint32_t	generation;
 			uint32_t	count;
 		} ref;
-		struct {
-			uint8_t		addr[16];
-			uint16_t	port;
-		} node_addr;
 
 		uint32_t		__pad[8];
 	};
@@ -190,8 +188,10 @@ struct sd_rsp {
 	uint8_t		opcode;
 	uint16_t	flags;
 	uint32_t	epoch;
-	uint32_t        id;
-	uint32_t        data_length;
+	uint32_t	id;
+	uint32_t	data_length;
+	uint8_t		addr[16];
+	uint16_t	port;
 	union {
 		uint32_t        result;
 		struct {
diff --git a/sheep/object_list_cache.c b/sheep/object_list_cache.c
index 9a7073d..cd594c2 100644
--- a/sheep/object_list_cache.c
+++ b/sheep/object_list_cache.c
@@ -106,8 +106,8 @@ int get_obj_list(const struct sd_req *hdr, struct sd_rsp *rsp, void *data)
 	int last = 0, end = 4096;
 	uint64_t *oids = xmalloc(end * sizeof(uint64_t));
 
-	memcpy(peer_nid.addr, hdr->node_addr.addr, sizeof(peer_nid.addr));
-	peer_nid.port = hdr->node_addr.port;
+	memcpy(peer_nid.addr, hdr->addr, sizeof(peer_nid.addr));
+	peer_nid.port = hdr->port;
 
 	/* first try getting the cached buffer with only a read lock held */
 	sd_read_lock(&obj_list_cache.lock);
diff --git a/sheep/recovery.c b/sheep/recovery.c
index ea67b5f..8eda732 100644
--- a/sheep/recovery.c
+++ b/sheep/recovery.c
@@ -978,9 +978,8 @@ retry:
 	sd_init_req(&hdr, SD_OP_GET_OBJ_LIST);
 	hdr.data_length = buf_size;
 	hdr.epoch = epoch;
-	memcpy(hdr.node_addr.addr, sys->this_node.nid.addr,
-			sizeof(hdr.node_addr.addr));
-	hdr.node_addr.port = sys->this_node.nid.port;
+	memcpy(hdr.addr, sys->this_node.nid.addr, sizeof(hdr.addr));
+	hdr.port = sys->this_node.nid.port;
 	ret = sheep_exec_req(&e->nid, &hdr, buf);
 
 	switch (ret) {
-- 
1.8.3.2





More information about the sheepdog mailing list