[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH][RESEND] block/vdi: allow disk sizes not multiple of
From: |
François Revol |
Subject: |
[Qemu-devel] [PATCH][RESEND] block/vdi: allow disk sizes not multiple of block size (fwd) |
Date: |
Tue, 22 Dec 2009 12:40:49 +0100 CET |
Anyone just tried it yet ?
François.
------ Forwarded Message: ------
To: address@hidden
From: "François Revol" <address@hidden>
Subject: [PATCH] block/vdi: allow disk sizes not multiple of block size
Date: Tue, 08 Dec 2009 15:34:18 +0100 CET
The disk image I created from my old laptop disk with VBoxManage
internalcommand converthd obviously was not a multiple of 1MB as when
created from scratch. This fixes QEMU refusing it. We still require the
size to be a multiple of sector size though.
It then boots correctly.
Allow opening VDI images with size not multiple of 1MB (as when converted from
a raw disk).
Signed-off-by: François Revol <address@hidden>
diff --git a/block/vdi.c b/block/vdi.c
index 45aa81c..c91961a 100644
--- a/block/vdi.c
+++ b/block/vdi.c
@@ -411,14 +411,17 @@ static int vdi_open(BlockDriverState *bs, const char
*filename, int flags)
/* We only support data blocks which start on a sector boundary. */
logout("unsupported data offset 0x%x B\n", header.offset_data);
goto fail;
+ } else if (header.disk_size % SECTOR_SIZE != 0) {
+ logout("unsupported disk size %" PRIu64 " B\n", header.disk_size);
+ goto fail;
} else if (header.sector_size != SECTOR_SIZE) {
logout("unsupported sector size %u B\n", header.sector_size);
goto fail;
} else if (header.block_size != 1 * MiB) {
logout("unsupported block size %u B\n", header.block_size);
goto fail;
- } else if (header.disk_size !=
- (uint64_t)header.blocks_in_image * header.block_size) {
+ } else if ((header.disk_size + header.block_size - 1) / header.block_size
!=
+ (uint64_t)header.blocks_in_image) {
logout("unexpected block number %u B\n", header.blocks_in_image);
goto fail;
} else if (!uuid_is_null(header.uuid_link)) {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [PATCH][RESEND] block/vdi: allow disk sizes not multiple of block size (fwd),
François Revol <=