qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 1/2] block: clean up bdrv_open2 structure a b


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH v2 1/2] block: clean up bdrv_open2 structure a bit
Date: Tue, 26 Jan 2010 16:02:52 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091209 Fedora/3.0-4.fc12 Lightning/1.0pre Thunderbird/3.0

On 01/20/2010 11:13 AM, Christoph Hellwig wrote:
Check the whitelist as early as possible instead of continuing the
setup, and move all the error handling code to the end of the
function.

Signed-off-by: Christoph Hellwig<address@hidden>

Applied all.  Thanks.

Regards,

Anthony Liguori

Index: qemu/block.c
===================================================================
--- qemu.orig/block.c   2010-01-20 17:21:33.000000000 +0100
+++ qemu/block.c        2010-01-20 17:24:22.596006289 +0100
@@ -428,10 +428,16 @@ int bdrv_open2(BlockDriverState *bs, con
              drv = find_image_format(filename);
          }
      }
+
      if (!drv) {
          ret = -ENOENT;
          goto unlink_and_fail;
      }
+    if (use_bdrv_whitelist&&  !bdrv_is_whitelisted(drv)) {
+        ret = -ENOTSUP;
+        goto unlink_and_fail;
+    }
+
      bs->drv = drv;
      bs->opaque = qemu_mallocz(drv->instance_size);

@@ -453,20 +459,12 @@ int bdrv_open2(BlockDriverState *bs, con
      } else {
          open_flags = flags&  ~(BDRV_O_FILE | BDRV_O_SNAPSHOT);
      }
-    if (use_bdrv_whitelist&&  !bdrv_is_whitelisted(drv)) {
-        ret = -ENOTSUP;
-    } else {
-        ret = drv->bdrv_open(bs, filename, open_flags);
-    }
+
+    ret = drv->bdrv_open(bs, filename, open_flags);
      if (ret<  0) {
-        qemu_free(bs->opaque);
-        bs->opaque = NULL;
-        bs->drv = NULL;
-    unlink_and_fail:
-        if (bs->is_temporary)
-            unlink(filename);
-        return ret;
+        goto free_and_fail;
      }
+
      if (drv->bdrv_getlength) {
          bs->total_sectors = bdrv_getlength(bs)>>  BDRV_SECTOR_BITS;
      }
@@ -499,6 +497,15 @@ int bdrv_open2(BlockDriverState *bs, con
              bs->change_cb(bs->change_opaque);
      }
      return 0;
+
+free_and_fail:
+    qemu_free(bs->opaque);
+    bs->opaque = NULL;
+    bs->drv = NULL;
+unlink_and_fail:
+    if (bs->is_temporary)
+        unlink(filename);
+    return ret;
  }

  void bdrv_close(BlockDriverState *bs)








reply via email to

[Prev in Thread] Current Thread [Next in Thread]