From: Uri Lublin <uril@redhat.com>
To: Anthony Liguori <aliguori@us.ibm.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 1/2] Introducing qcow2 extensions + keep backing file format (v4)
Date: Sun, 01 Mar 2009 13:22:07 +0200 [thread overview]
Message-ID: <49AA6FDF.20603@redhat.com> (raw)
In-Reply-To: <49A6E409.4030607@us.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 2356 bytes --]
Anthony Liguori wrote:
> Uri Lublin wrote:
>> Qcow2 extensions are build of magic (id) len (in bytes) and data.
>> They reside between the end of the header and the filename.
>>
>> We can keep the backing file format in a such a qcow2 extension, to
>> 1. Provide a way to know the backing file format without probing
>> it (setting the format at creation time).
>> 2. Enable using qcow2 format over host block devices.
>> (only if the user specifically asks for it, by providing the format
>> at creation time).
>>
>> I've added bdrv_create2 and drv->bdrv_create2 (implemented only
>> by block-qcow2 currently) to pass the backing-format to create.
>>
>> Based on a work done by Shahar Frank.
>>
>> Also fixes a security flaw found by Daniel P. Berrange on [1]
>> which summarizes: "Autoprobing: just say no."
>>
>> [1] http://lists.gnu.org/archive/html/qemu-devel/2008-12/msg01083.html
>>
>> Signed-off-by: Uri Lublin <uril@redhat.com>
>>
>
> This made it through my regression testing but...
>
>> int bdrv_create(BlockDriver *drv,
>> const char *filename, int64_t size_in_sectors,
>> const char *backing_file, int flags)
>> @@ -348,6 +362,9 @@ int bdrv_open2(BlockDriverState *bs, const char
>> *filename, int flags,
>>
>> /* if there is a backing file, use it */
>> bs1 = bdrv_new("");
>> +/* if (drv) */
>> +/* pstrcpy(bs1->backing_format,
>> sizeof(bs->backing_format), */
>> +/* drv->format_name); */
>>
>
> I don't know if I missed this before or it was added since v3 but I'm
> curious why this is here and why it's commented out.
>
It's an old code, which should have been deleted.
The purpose was to make sure the temporary-snapshot-file backing-file-format
is known.
This is now done with bdrv_create2, that I've added.
You can delete it yourself or apply the attached patch (or squash patches)
Alternatively I can send it to you again as a single patch (v5)
Also I've noticed that a small fix is needed for BDRV_O_SNAPSHOT. e.g we should
use bdrv_open2 (so we would not probe the image if the format is known), so I'm
attaching a patch to fix that too. Again if you want I can resend it as a single
patch (squashed with v4) or you can apply(squash) this patch yourself on top of
my previous patches.
Thanks,
Uri.
[-- Attachment #2: 0001-block.c-remove-dead-commented-out-code.patch --]
[-- Type: text/x-patch, Size: 801 bytes --]
>From 5003cc362793c10f276ab186026b3f25b6b3ac9e Mon Sep 17 00:00:00 2001
From: Uri Lublin <uril@redhat.com>
Date: Sun, 1 Mar 2009 12:43:45 +0200
Subject: [PATCH] block.c: remove dead commented out code
Signed-off-by: Uri Lublin <uril@redhat.com>
---
block.c | 3 ---
1 files changed, 0 insertions(+), 3 deletions(-)
diff --git a/block.c b/block.c
index 31d6d5b..1626e0c 100644
--- a/block.c
+++ b/block.c
@@ -362,9 +362,6 @@ int bdrv_open2(BlockDriverState *bs, const char *filename, int flags,
/* if there is a backing file, use it */
bs1 = bdrv_new("");
-/* if (drv) */
-/* pstrcpy(bs1->backing_format, sizeof(bs->backing_format), */
-/* drv->format_name); */
if (!bs1) {
return -ENOMEM;
}
--
1.6.0.6
[-- Attachment #3: 0002-block.c-If-image-format-is-known-use-it-for-BDRV_O.patch --]
[-- Type: text/x-patch, Size: 1238 bytes --]
>From bc79eae6c3226d21bd3fcbc370a86d7b24657aad Mon Sep 17 00:00:00 2001
From: Uri Lublin <uril@redhat.com>
Date: Sun, 1 Mar 2009 12:44:38 +0200
Subject: [PATCH] block.c: If image format is known, use it for BDRV_O_SNAPSHOT flag as well
Otherwise we'd
1. Unnecessarily probe the image to find out its format
2 Get it wrong for host-devices and non-raw images, which
may affect created image size.
Also, force the temporary snapshot image to be of format bdrv_qcow2
Signed-off-by: Uri Lublin <uril@redhat.com>
---
block.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/block.c b/block.c
index 1626e0c..0939cad 100644
--- a/block.c
+++ b/block.c
@@ -365,7 +365,7 @@ int bdrv_open2(BlockDriverState *bs, const char *filename, int flags,
if (!bs1) {
return -ENOMEM;
}
- if (bdrv_open(bs1, filename, 0) < 0) {
+ if (bdrv_open2(bs1, filename, 0, drv) < 0) {
bdrv_delete(bs1);
return -1;
}
@@ -392,6 +392,7 @@ int bdrv_open2(BlockDriverState *bs, const char *filename, int flags,
return -1;
}
filename = tmp_filename;
+ drv = &bdrv_qcow2;
bs->is_temporary = 1;
}
--
1.6.0.6
prev parent reply other threads:[~2009-03-01 11:22 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-18 17:51 [Qemu-devel] [PATCH 0/2] Introducing qcow2 extensions + keep backing file format (v4) Uri Lublin
2009-02-18 17:51 ` [Qemu-devel] [PATCH 1/2] " Uri Lublin
2009-02-18 17:51 ` [Qemu-devel] [PATCH 2/2] qemu-img: adding a "-F base_fmt" option to "qemu-img create -b" (v4) Uri Lublin
2009-02-26 18:48 ` [Qemu-devel] [PATCH 1/2] Introducing qcow2 extensions + keep backing file format (v4) Anthony Liguori
2009-03-01 11:22 ` Uri Lublin [this message]
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=49AA6FDF.20603@redhat.com \
--to=uril@redhat.com \
--cc=aliguori@us.ibm.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).