On Sat, Mar 19, 2016 at 07:42:43PM +0000, Stefan Hajnoczi wrote:
> The vpc driver has two methods of determining virtual disk size.  The
> correct one to use depends on the software that generated the image
> file.  Add the XenServer creator_app signature so that image size is
> correctly detected for those images.
> 
> Reported-by: Grant Wu <grant...@gmail.com>
> Reported-by: Spencer Baugh <sba...@catern.com>
> Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com>
> ---
>  block/vpc.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/block/vpc.c b/block/vpc.c
> index 8435205..7517f75 100644
> --- a/block/vpc.c
> +++ b/block/vpc.c
> @@ -298,6 +298,7 @@ static int vpc_open(BlockDriverState *bs, QDict *options, 
> int flags,
>       *      'qem2'  :  current_size     QEMU (uses current_size)
>       *      'win '  :  current_size     Hyper-V
>       *      'd2v '  :  current_size     Disk2vhd
> +     *      'tap\0' :  current_size     XenServer

I just tried out XenConverter, and it set the creator_app field to
"CTXS".  We should probably add a check for that, too.

>       *
>       *  The user can override the table values via drive options, however
>       *  even with an override we will still use current_size for images
> @@ -305,7 +306,8 @@ static int vpc_open(BlockDriverState *bs, QDict *options, 
> int flags,
>       */
>      use_chs = (!!strncmp(footer->creator_app, "win ", 4) &&
>                 !!strncmp(footer->creator_app, "qem2", 4) &&
> -               !!strncmp(footer->creator_app, "d2v ", 4)) || 
> s->force_use_chs;
> +               !!strncmp(footer->creator_app, "d2v ", 4) &&
> +               !!memcmp(footer->creator_app, "tap", 4)) || s->force_use_chs;
>  
>      if (!use_chs || bs->total_sectors == VHD_MAX_GEOMETRY || 
> s->force_use_sz) {
>          bs->total_sectors = be64_to_cpu(footer->current_size) /
> -- 
> 2.5.0
> 
> 

Reply via email to