From: Kevin Wolf <kwolf@redhat.com>
To: qemu-block@nongnu.org
Cc: kwolf@redhat.com, qemu-devel@nongnu.org
Subject: [PULL 02/25] vpc: Read images exported from Azure correctly
Date: Mon, 10 Feb 2025 17:10:11 +0100 [thread overview]
Message-ID: <20250210161034.76494-3-kwolf@redhat.com> (raw)
In-Reply-To: <20250210161034.76494-1-kwolf@redhat.com>
From: Vitaly Kuznetsov <vkuznets@redhat.com>
It was found that 'qemu-nbd' is not able to work with some disk images
exported from Azure. Looking at the 512b footer (which contains VPC
metadata):
00000000 63 6f 6e 65 63 74 69 78 00 00 00 02 00 01 00 00 |conectix........|
00000010 ff ff ff ff ff ff ff ff 2e c7 9b 96 77 61 00 00 |............wa..|
00000020 00 07 00 00 57 69 32 6b 00 00 00 01 40 00 00 00 |....Wi2k....@...|
00000030 00 00 00 01 40 00 00 00 28 a2 10 3f 00 00 00 02 |....@...(..?....|
00000040 ff ff e7 47 8c 54 df 94 bd 35 71 4c 94 5f e5 44 |...G.T...5qL._.D|
00000050 44 53 92 1a 00 00 00 00 00 00 00 00 00 00 00 00 |DS..............|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
we can see that Azure uses a different 'Creator application' --
'wa\0\0' (offset 0x1c, likely reads as 'Windows Azure') and QEMU uses this
field to determine how it can get image size. Apparently, Azure uses 'new'
method, just like Hyper-V.
Overall, it seems that only VPC and old QEMUs need to be ignored as all new
creator apps seem to have reliable current_size. Invert the logic and make
'current_size' method the default to avoid adding every new creator app to
the list.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Message-ID: <20241212134504.1983757-3-vkuznets@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
block/vpc.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/block/vpc.c b/block/vpc.c
index cb0773914c..fb64ea6040 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -237,6 +237,7 @@ static void vpc_parse_options(BlockDriverState *bs, QemuOpts *opts,
* 'd2v ' : current_size Disk2vhd
* 'tap\0' : current_size XenServer
* 'CTXS' : current_size XenConverter
+ * 'wa\0\0': current_size Azure
*
* The user can override the table values via drive options, however
* even with an override we will still use current_size for images
@@ -244,11 +245,8 @@ static void vpc_parse_options(BlockDriverState *bs, QemuOpts *opts,
*/
static bool vpc_ignore_current_size(VHDFooter *footer)
{
- return !!strncmp(footer->creator_app, "win ", 4) &&
- !!strncmp(footer->creator_app, "qem2", 4) &&
- !!strncmp(footer->creator_app, "d2v ", 4) &&
- !!strncmp(footer->creator_app, "CTXS", 4) &&
- !!memcmp(footer->creator_app, "tap", 4));
+ return !strncmp(footer->creator_app, "vpc ", 4) ||
+ !strncmp(footer->creator_app, "qemu", 4);
}
static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
--
2.48.1
next prev parent reply other threads:[~2025-02-10 16:12 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-10 16:10 [PULL 00/25] Block layer patches Kevin Wolf
2025-02-10 16:10 ` [PULL 01/25] vpc: Split off vpc_ignore_current_size() helper Kevin Wolf
2025-02-10 16:10 ` Kevin Wolf [this message]
2025-02-10 16:10 ` [PULL 03/25] block: Improve blk_get_attached_dev_id() docstring Kevin Wolf
2025-02-10 16:10 ` [PULL 04/25] block: Fix leak in send_qmp_error_event Kevin Wolf
2025-02-10 16:10 ` [PULL 05/25] scripts/qemu-gdb: Always do full stack dump for python errors Kevin Wolf
2025-02-10 16:10 ` [PULL 06/25] scripts/qemu-gdb: Simplify fs_base fetching for coroutines Kevin Wolf
2025-02-10 16:10 ` [PULL 07/25] scripts/qemu-gdb: Support coroutine dumps in coredumps Kevin Wolf
2025-02-10 16:10 ` [PULL 08/25] block-backend: Fix argument order when calling 'qapi_event_send_block_io_error()' Kevin Wolf
2025-02-10 16:10 ` [PULL 09/25] block: Add 'active' field to BlockDeviceInfo Kevin Wolf
2025-02-10 16:10 ` [PULL 10/25] block: Allow inactivating already inactive nodes Kevin Wolf
2025-02-10 16:10 ` [PULL 11/25] block: Inactivate external snapshot overlays when necessary Kevin Wolf
2025-02-10 16:10 ` [PULL 12/25] migration/block-active: Remove global active flag Kevin Wolf
2025-02-10 16:10 ` [PULL 13/25] block: Don't attach inactive child to active node Kevin Wolf
2025-02-10 16:10 ` [PULL 14/25] block: Fix crash on block_resize on inactive node Kevin Wolf
2025-02-10 16:10 ` [PULL 15/25] block: Add option to create inactive nodes Kevin Wolf
2025-02-10 16:10 ` [PULL 16/25] block: Add blockdev-set-active QMP command Kevin Wolf
2025-02-10 16:10 ` [PULL 17/25] block: Support inactive nodes in blk_insert_bs() Kevin Wolf
2025-02-10 16:10 ` [PULL 18/25] block/export: Don't ignore image activation error in blk_exp_add() Kevin Wolf
2025-02-10 16:10 ` [PULL 19/25] block: Drain nodes before inactivating them Kevin Wolf
2025-02-10 16:10 ` [PULL 20/25] block/export: Add option to allow export of inactive nodes Kevin Wolf
2025-02-10 16:10 ` [PULL 21/25] nbd/server: Support " Kevin Wolf
2025-02-10 16:10 ` [PULL 22/25] iotests: Add filter_qtest() Kevin Wolf
2025-02-10 16:10 ` [PULL 23/25] iotests: Add qsd-migrate case Kevin Wolf
2025-02-10 16:10 ` [PULL 24/25] iotests: Add (NBD-based) tests for inactive nodes Kevin Wolf
2025-02-10 16:10 ` [PULL 25/25] block: remove unused BLOCK_OP_TYPE_DATAPLANE Kevin Wolf
2025-02-11 2:37 ` [PULL 00/25] Block layer patches Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250210161034.76494-3-kwolf@redhat.com \
--to=kwolf@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.