[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH for-2.6 1/7] block/vpc: fix VPC 'qemu-img create
From: |
Jeff Cody |
Subject: |
Re: [Qemu-devel] [PATCH for-2.6 1/7] block/vpc: fix VPC 'qemu-img create' regression |
Date: |
Wed, 13 Apr 2016 11:40:13 -0400 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Tue, Mar 22, 2016 at 11:33:38PM -0400, Jeff Cody wrote:
> Commit 'b8f45cdf7827e39f9a1e6cc446f5972cc6144237' switched VPC
> over to using blk_pwrite() instead of bdrv_pwrite_sync(). The
> return value of bdrv_pwrite_sync() was always 0 for success, and
> create_dynamic_disk() in one instance checked for a non-zero return
> value to indicate error. However, blk_pwrite() may return positive
> values for success.
>
> This fails silently as well, since vpc_create() did not set errp
> in this failuer case. Set errp in all instances in vpc_create().
>
> Signed-off-by: Jeff Cody <address@hidden>
Ping on this series - ideally the whole series for 2.6, but this patch
in particular is needed for 2.6 to prevent a regression from 2.5 (QEMU
can no longer create VPC/VHD images without this patch).
> ---
> block/vpc.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/block/vpc.c b/block/vpc.c
> index 8435205..bc3d1c6 100644
> --- a/block/vpc.c
> +++ b/block/vpc.c
> @@ -774,7 +774,7 @@ static int create_dynamic_disk(BlockBackend *blk, uint8_t
> *buf,
> num_bat_entries = (total_sectors + block_size / 512) / (block_size /
> 512);
>
> ret = blk_pwrite(blk, offset, buf, HEADER_SIZE);
> - if (ret) {
> + if (ret < 0) {
> goto fail;
> }
>
> @@ -873,6 +873,7 @@ static int vpc_create(const char *filename, QemuOpts
> *opts, Error **errp)
> } else if (!strcmp(disk_type_param, "fixed")) {
> disk_type = VHD_FIXED;
> } else {
> + error_setg(errp, "Invalid disk type, %s", disk_type_param);
> ret = -EINVAL;
> goto out;
> }
> @@ -924,6 +925,7 @@ static int vpc_create(const char *filename, QemuOpts
> *opts, Error **errp)
> total_sectors = total_size / BDRV_SECTOR_SIZE;
> /* Allow a maximum disk size of approximately 2 TB */
> if (total_sectors > VHD_MAX_SECTORS) {
> + error_setg(errp, "Disk size is too large, max size is 2040 GiB");
> ret = -EFBIG;
> goto out;
> }
> @@ -974,6 +976,9 @@ static int vpc_create(const char *filename, QemuOpts
> *opts, Error **errp)
> } else {
> ret = create_fixed_disk(blk, buf, total_size);
> }
> + if (ret < 0) {
> + error_setg(errp, "Unable to create or write VHD header");
> + }
>
> out:
> blk_unref(blk);
> --
> 1.9.3
>
- Re: [Qemu-devel] [PATCH for-2.6 1/7] block/vpc: fix VPC 'qemu-img create' regression,
Jeff Cody <=