Fixed size VPC images do not have a footer, hence the current probe function will fail and QEMU will fall back to the raw_bsd driver, which is not the correct behaviour. The specification of the format says that fixed size images have a footer as the last 512 bytes of the file. The footer is exactly the same as the header would be in the case of dynamically growing images.
For this, we need to read the last 512 bytes of the image, however the current mechanics predominantly read the first 2048 bytes and pass that as a buffer to the probe functions. Solve this by passing the BlockDriverState to the probe functions, hence giving them a chance to read the extra bytes they might need. Levente Kurusa (3): block: format: pass down the current state to the format's probe function block: vpc: introduce vpc_check_signature function block: vpc: handle fixed size images in probe function block.c | 2 +- block/bochs.c | 3 ++- block/cloop.c | 3 ++- block/cow.c | 3 ++- block/dmg.c | 3 ++- block/parallels.c | 3 ++- block/qcow.c | 3 ++- block/qcow2.c | 3 ++- block/qed.c | 4 ++-- block/raw_bsd.c | 3 ++- block/vdi.c | 3 ++- block/vmdk.c | 3 ++- block/vpc.c | 34 +++++++++++++++++++++++++++++----- include/block/block_int.h | 3 ++- 14 files changed, 54 insertions(+), 19 deletions(-) -- 1.9.3