[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