qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] block: fix cache flushing in bdrv_commit


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH] block: fix cache flushing in bdrv_commit
Date: Wed, 20 Jan 2010 08:58:56 -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/17/2010 05:32 AM, Christoph Hellwig wrote:
On Thu, Jan 14, 2010 at 11:21:15AM +0100, Kevin Wolf wrote:
Anthony, you seem to have missed the v2 patch that considered my review
comments. Can you please apply the diff between v1 and v2 on top?
Here is the differences in patch form:

---
From: Christoph Hellwig<address@hidden>
Subject: block: fix cache flushing in bdrv_commit

As pointed out by Kevin Wolf the previous patch returned early if we
there is a bdrv_make_empty method and it missed a cache flush for the
frontend device after the bdev_make_empty call.  This patch fixes it
up.

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

Applied.  Thanks.

Regards,

Anthony Liguori
Index: qemu/block.c
===================================================================
--- qemu.orig/block.c   2010-01-17 12:27:03.589006970 +0100
+++ qemu/block.c        2010-01-17 12:27:55.718008519 +0100
@@ -589,6 +589,7 @@ int bdrv_commit(BlockDriverState *bs)
      BlockDriver *drv = bs->drv;
      int64_t i, total_sectors;
      int n, j;
+    int ret = 0;
      unsigned char sector[512];

      if (!drv)
@@ -620,8 +621,10 @@ int bdrv_commit(BlockDriverState *bs)
          }
      }

-    if (drv->bdrv_make_empty)
-       return drv->bdrv_make_empty(bs);
+    if (drv->bdrv_make_empty) {
+        ret = drv->bdrv_make_empty(bs);
+        bdrv_flush(bs);
+    }

      /*
       * Make sure all data we wrote to the backing device is actually
@@ -629,7 +632,7 @@ int bdrv_commit(BlockDriverState *bs)
       */
      if (bs->backing_hd)
          bdrv_flush(bs->backing_hd);
-    return 0;
+    return ret;
  }

  /*








reply via email to

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