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 > >