[sheepdog] [PATCH] dog: fix not to use both options -y and -z simultaneously

Hitoshi Mitake mitake.hitoshi at lab.ntt.co.jp
Fri Jan 23 08:18:31 CET 2015


At Fri, 23 Jan 2015 15:49:43 +0900,
Teruaki Ishizaki wrote:
> 
> Now, selectable block_size_shift feature don't support to use
> HyperVolume simultaneously.
> 
> But, users can create a new VDI with both options, -y and -z,
> with dog command.
> 
> This patch changes that users can't specify both those options
> to create a new VDI.
> 
> Signed-off-by: Teruaki Ishizaki <ishizaki.teruaki at lab.ntt.co.jp>
> ---
>  dog/vdi.c |   16 ++++++++++++++--
>  1 files changed, 14 insertions(+), 2 deletions(-)

Applied, thanks.
Hitoshi

> 
> diff --git a/dog/vdi.c b/dog/vdi.c
> index dee4b92..67e2f0b 100644
> --- a/dog/vdi.c
> +++ b/dog/vdi.c
> @@ -470,7 +470,10 @@ static int vdi_create(int argc, char **argv)
>  
>  	if (vdi_cmd_data.block_size_shift) {
>  		object_size = (UINT32_C(1) << vdi_cmd_data.block_size_shift);
> -		old_max_total_size = object_size * OLD_MAX_DATA_OBJS;
> +	} else if (vdi_cmd_data.store_policy == 1) {
> +		/* Force to use default block_size_shift for hyper volume */
> +		vdi_cmd_data.block_size_shift = SD_DEFAULT_BLOCK_SIZE_SHIFT;
> +		object_size = (UINT32_C(1) << vdi_cmd_data.block_size_shift);
>  	} else {
>  		struct sd_req hdr;
>  		struct sd_rsp *rsp = (struct sd_rsp *)&hdr;
> @@ -496,9 +499,10 @@ static int vdi_create(int argc, char **argv)
>  			goto out;
>  		}
>  		object_size = (UINT32_C(1) << cinfo.block_size_shift);
> -		old_max_total_size = object_size * OLD_MAX_DATA_OBJS;
>  	}
>  
> +	old_max_total_size = object_size * OLD_MAX_DATA_OBJS;
> +
>  	if (size > old_max_total_size && 0 == vdi_cmd_data.store_policy) {
>  		sd_err("VDI size is larger than %s bytes, please use '-y' to "
>  		       "create a hyper volume with size up to %s bytes"
> @@ -3331,6 +3335,10 @@ static int vdi_parser(int ch, const char *opt)
>  		break;
>  	case 'y':
>  		vdi_cmd_data.store_policy = 1;
> +		if (vdi_cmd_data.block_size_shift) {
> +			sd_info("Don't specify both -y and -z options, please");
> +			exit(EXIT_FAILURE);
> +		}
>  		break;
>  	case 'o':
>  		vdi_cmd_data.oid = strtoull(opt, &p, 16);
> @@ -3353,6 +3361,10 @@ static int vdi_parser(int ch, const char *opt)
>  			       " Please set shift bit larger than 20");
>  			exit(EXIT_FAILURE);
>  		}
> +		if (vdi_cmd_data.store_policy == 1) {
> +			sd_info("Don't specify both -y and -z options, please");
> +			exit(EXIT_FAILURE);
> +		}
>  		vdi_cmd_data.block_size_shift = block_size_shift;
>  		break;
>  	case 'D':
> -- 
> 1.7.1
> 
> -- 
> sheepdog mailing list
> sheepdog at lists.wpkg.org
> https://lists.wpkg.org/mailman/listinfo/sheepdog



More information about the sheepdog mailing list