[Sheepdog] [PATCH v4 6/7] sheep: change hdr flags uint32_t from uint16_t

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Tue Oct 18 19:01:22 CEST 2011


At Tue, 18 Oct 2011 16:58:57 +0800,
Liu Yuan wrote:
> 
> From: Liu Yuan <tailai.ly at taobao.com>
> 
> And in passing, extend req/rsp into 14 uint32_t.
> 
> Signed-off-by: Liu Yuan <tailai.ly at taobao.com>
> ---
>  include/sheep.h          |   23 ++++++++++++-----------
>  include/sheepdog_proto.h |   23 ++++++++++++-----------
>  2 files changed, 24 insertions(+), 22 deletions(-)
> 
> diff --git a/include/sheep.h b/include/sheep.h
> index 230917f..0bacdb6 100644
> --- a/include/sheep.h
> +++ b/include/sheep.h
> @@ -51,7 +51,7 @@
>  struct sd_so_req {
>  	uint8_t		proto_ver;
>  	uint8_t		opcode;
> -	uint16_t	flags;
> +	uint32_t	flags;
>  	uint32_t	epoch;
>  	uint32_t        id;
>  	uint32_t        data_length;
> @@ -59,13 +59,13 @@ struct sd_so_req {
>  	uint64_t	ctime;
>  	uint32_t	copies;
>  	uint32_t	tag;
> -	uint32_t	opcode_specific[2];
> +	uint32_t	opcode_specific[3];
>  };
>  
>  struct sd_so_rsp {
>  	uint8_t		proto_ver;
>  	uint8_t		opcode;
> -	uint16_t	flags;
> +	uint32_t	flags;
>  	uint32_t	epoch;
>  	uint32_t        id;
>  	uint32_t        data_length;
> @@ -73,46 +73,46 @@ struct sd_so_rsp {
>  	uint32_t	copies;
>  	uint64_t	ctime;
>  	uint64_t	oid;
> -	uint32_t	opcode_specific[2];
> +	uint32_t	opcode_specific[3];
>  };
>  
>  struct sd_list_req {
>  	uint8_t		proto_ver;
>  	uint8_t		opcode;
> -	uint16_t	flags;
> +	uint32_t	flags;
>  	uint32_t	epoch;
>  	uint32_t        id;
>  	uint32_t        data_length;
>  	uint32_t        tgt_epoch;
> -	uint32_t        pad[7];
> +	uint32_t        pad[8];
>  };
>  
>  struct sd_list_rsp {
>  	uint8_t		proto_ver;
>  	uint8_t		opcode;
> -	uint16_t	flags;
> +	uint32_t	flags;
>  	uint32_t	epoch;
>  	uint32_t        id;
>  	uint32_t        data_length;
>  	uint32_t        result;
> -	uint32_t        pad[7];
> +	uint32_t        pad[8];
>  };
>  
>  struct sd_node_req {
>  	uint8_t		proto_ver;
>  	uint8_t		opcode;
> -	uint16_t	flags;
> +	uint32_t	flags;
>  	uint32_t	epoch;
>  	uint32_t        id;
>  	uint32_t        data_length;
>  	uint32_t	request_ver;
> -	uint32_t	pad[7];
> +	uint32_t	pad[8];
>  };
>  
>  struct sd_node_rsp {
>  	uint8_t		proto_ver;
>  	uint8_t		opcode;
> -	uint16_t	flags;
> +	uint32_t	flags;
>  	uint32_t	epoch;
>  	uint32_t        id;
>  	uint32_t        data_length;
> @@ -122,6 +122,7 @@ struct sd_node_rsp {
>  	uint32_t	master_idx;
>  	uint64_t	store_size;
>  	uint64_t	store_free;
> +	uint32_t	pad[1];
>  };
>  
>  struct sheepdog_node_list_entry {
> diff --git a/include/sheepdog_proto.h b/include/sheepdog_proto.h
> index 9467c44..1091184 100644
> --- a/include/sheepdog_proto.h
> +++ b/include/sheepdog_proto.h
> @@ -95,28 +95,28 @@
>  struct sd_req {
>  	uint8_t		proto_ver;
>  	uint8_t		opcode;
> -	uint16_t	flags;
> +	uint32_t	flags;
>  	uint32_t	epoch;
>  	uint32_t        id;
>  	uint32_t        data_length;
> -	uint32_t	opcode_specific[8];
> +	uint32_t	opcode_specific[9];
>  };
>  
>  struct sd_rsp {
>  	uint8_t		proto_ver;
>  	uint8_t		opcode;
> -	uint16_t	flags;
> +	uint32_t	flags;
>  	uint32_t	epoch;
>  	uint32_t        id;
>  	uint32_t        data_length;
>  	uint32_t        result;
> -	uint32_t	opcode_specific[7];
> +	uint32_t	opcode_specific[8];
>  };
>  
>  struct sd_obj_req {
>  	uint8_t		proto_ver;
>  	uint8_t		opcode;
> -	uint16_t	flags;
> +	uint32_t	flags;
>  	uint32_t	epoch;
>  	uint32_t        id;
>  	uint32_t        data_length;
> @@ -125,24 +125,25 @@ struct sd_obj_req {
>  	uint32_t        copies;
>  	uint32_t        tgt_epoch;
>  	uint64_t        offset;
> +	uint32_t	pad[1];
>  };
>  
>  struct sd_obj_rsp {
>  	uint8_t		proto_ver;
>  	uint8_t		opcode;
> -	uint16_t	flags;
> +	uint32_t	flags;
>  	uint32_t	epoch;
>  	uint32_t        id;
>  	uint32_t        data_length;
>  	uint32_t        result;
>  	uint32_t        copies;
> -	uint32_t        pad[6];
> +	uint32_t        pad[7];
>  };
>  
>  struct sd_vdi_req {
>  	uint8_t		proto_ver;
>  	uint8_t		opcode;
> -	uint16_t	flags;
> +	uint32_t	flags;
>  	uint32_t	epoch;
>  	uint32_t        id;
>  	uint32_t        data_length;
> @@ -150,13 +151,13 @@ struct sd_vdi_req {
>  	uint32_t        base_vdi_id;
>  	uint32_t	copies;
>  	uint32_t        snapid;
> -	uint32_t        pad[3];
> +	uint32_t        pad[4];
>  };
>  
>  struct sd_vdi_rsp {
>  	uint8_t		proto_ver;
>  	uint8_t		opcode;
> -	uint16_t	flags;
> +	uint32_t	flags;
>  	uint32_t	epoch;
>  	uint32_t        id;
>  	uint32_t        data_length;
> @@ -165,7 +166,7 @@ struct sd_vdi_rsp {
>  	uint32_t        vdi_id;
>  	uint32_t        attr_id;
>  	uint32_t        copies;
> -	uint32_t        pad[3];
> +	uint32_t        pad[4];
>  };
>  
>  struct sheepdog_inode {

I don't want to change network protocols easily.  This forces us to
change client codes in QEMU too, and users suffer from the
compatibility problem.

Isn't it much better to make all flags uint16_t?


Thanks,

Kazutaka



More information about the sheepdog mailing list