qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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


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