qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] vmdk: Leave bdi intact if -ENOTSUP in vmdk_get_info
@ 2014-11-14  4:09 Fam Zheng
  2014-11-14  8:31 ` Max Reitz
  2014-11-14  9:29 ` Stefan Hajnoczi
  0 siblings, 2 replies; 4+ messages in thread
From: Fam Zheng @ 2014-11-14  4:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, Stefan Hajnoczi, Max Reitz

When extent types don't match, we return -ENOTSUP. In this case, be
polite to the caller and don't modify bdi.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 block/vmdk.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/block/vmdk.c b/block/vmdk.c
index 673d3f5..2cbfd3e 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -2137,23 +2137,29 @@ static ImageInfoSpecific *vmdk_get_specific_info(BlockDriverState *bs)
     return spec_info;
 }
 
+static bool vmdk_extents_type_eq(const VmdkExtent *a, const VmdkExtent *b)
+{
+    return a->flat == b->flat &&
+           a->compressed == b->compressed &&
+           (a->flat || a->cluster_sectors == b->cluster_sectors);
+}
+
 static int vmdk_get_info(BlockDriverState *bs, BlockDriverInfo *bdi)
 {
     int i;
     BDRVVmdkState *s = bs->opaque;
     assert(s->num_extents);
-    bdi->needs_compressed_writes = s->extents[0].compressed;
-    if (!s->extents[0].flat) {
-        bdi->cluster_size = s->extents[0].cluster_sectors << BDRV_SECTOR_BITS;
-    }
+
     /* See if we have multiple extents but they have different cases */
     for (i = 1; i < s->num_extents; i++) {
-        if (bdi->needs_compressed_writes != s->extents[i].compressed ||
-            (bdi->cluster_size && bdi->cluster_size !=
-                s->extents[i].cluster_sectors << BDRV_SECTOR_BITS)) {
+        if (!vmdk_extents_type_eq(&s->extents[0], &s->extents[i])) {
             return -ENOTSUP;
         }
     }
+    bdi->needs_compressed_writes = s->extents[0].compressed;
+    if (!s->extents[0].flat) {
+        bdi->cluster_size = s->extents[0].cluster_sectors << BDRV_SECTOR_BITS;
+    }
     return 0;
 }
 
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH] vmdk: Leave bdi intact if -ENOTSUP in vmdk_get_info
  2014-11-14  4:09 [Qemu-devel] [PATCH] vmdk: Leave bdi intact if -ENOTSUP in vmdk_get_info Fam Zheng
@ 2014-11-14  8:31 ` Max Reitz
  2014-11-14  9:29 ` Stefan Hajnoczi
  1 sibling, 0 replies; 4+ messages in thread
From: Max Reitz @ 2014-11-14  8:31 UTC (permalink / raw)
  To: Fam Zheng, qemu-devel; +Cc: Kevin Wolf, Stefan Hajnoczi

On 2014-11-14 at 05:09, Fam Zheng wrote:
> When extent types don't match, we return -ENOTSUP. In this case, be
> polite to the caller and don't modify bdi.
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>   block/vmdk.c | 20 +++++++++++++-------
>   1 file changed, 13 insertions(+), 7 deletions(-)

Reviewed-by: Max Reitz <mreitz@redhat.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH] vmdk: Leave bdi intact if -ENOTSUP in vmdk_get_info
  2014-11-14  4:09 [Qemu-devel] [PATCH] vmdk: Leave bdi intact if -ENOTSUP in vmdk_get_info Fam Zheng
  2014-11-14  8:31 ` Max Reitz
@ 2014-11-14  9:29 ` Stefan Hajnoczi
  2014-11-17  2:14   ` Fam Zheng
  1 sibling, 1 reply; 4+ messages in thread
From: Stefan Hajnoczi @ 2014-11-14  9:29 UTC (permalink / raw)
  To: Fam Zheng; +Cc: Kevin Wolf, qemu-devel, Stefan Hajnoczi, Max Reitz

[-- Attachment #1: Type: text/plain, Size: 871 bytes --]

On Fri, Nov 14, 2014 at 12:09:21PM +0800, Fam Zheng wrote:
> When extent types don't match, we return -ENOTSUP. In this case, be
> polite to the caller and don't modify bdi.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  block/vmdk.c | 20 +++++++++++++-------
>  1 file changed, 13 insertions(+), 7 deletions(-)

At this stage of the release process it would be very helpful to include
some context for this patch: is it a pure cleanup or actually a bug fix
that needs to go into QEMU 2.2?

Since you are a regular contributor and I therefore trust you, I have
merged this patch.  But please be clear in commit descriptions about
whether or not a patch is a bug fix (how to reproduce the bug, if a
previous commit's regression is being fixed, etc).

Thanks, applied to my block tree:
https://github.com/stefanha/qemu/commits/block

Stefan

[-- Attachment #2: Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH] vmdk: Leave bdi intact if -ENOTSUP in vmdk_get_info
  2014-11-14  9:29 ` Stefan Hajnoczi
@ 2014-11-17  2:14   ` Fam Zheng
  0 siblings, 0 replies; 4+ messages in thread
From: Fam Zheng @ 2014-11-17  2:14 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: Kevin Wolf, qemu-devel, Stefan Hajnoczi, Max Reitz

On Fri, 11/14 09:29, Stefan Hajnoczi wrote:
> On Fri, Nov 14, 2014 at 12:09:21PM +0800, Fam Zheng wrote:
> > When extent types don't match, we return -ENOTSUP. In this case, be
> > polite to the caller and don't modify bdi.
> > 
> > Signed-off-by: Fam Zheng <famz@redhat.com>
> > ---
> >  block/vmdk.c | 20 +++++++++++++-------
> >  1 file changed, 13 insertions(+), 7 deletions(-)
> 
> At this stage of the release process it would be very helpful to include
> some context for this patch: is it a pure cleanup or actually a bug fix
> that needs to go into QEMU 2.2?

This one is more of a cleanup than bug fix: although there is a small logical
change, it's only visible to user on abnormally structured VMDK (mixed extent
type, etc.) that require manual editing image file, which is AFAIK not a valid
use case and will not cause anything worse than an error. I sent the patch
mostly for the function semantic purpose: don't change caller's data unless
it's necessary to.

> 
> Since you are a regular contributor and I therefore trust you, I have
> merged this patch.  But please be clear in commit descriptions about
> whether or not a patch is a bug fix (how to reproduce the bug, if a
> previous commit's regression is being fixed, etc).

OK. I'll remember next time. Thanks for pointing out.

Fam

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-11-17  2:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-14  4:09 [Qemu-devel] [PATCH] vmdk: Leave bdi intact if -ENOTSUP in vmdk_get_info Fam Zheng
2014-11-14  8:31 ` Max Reitz
2014-11-14  9:29 ` Stefan Hajnoczi
2014-11-17  2:14   ` Fam Zheng

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