diff mbox

[v2] qemu-img: let 'qemu-img convert' flush data

Message ID 4F85A16D.2070303@gmail.com
State New
Headers show

Commit Message

Liu Yuan April 11, 2012, 3:21 p.m. UTC
On 04/11/2012 11:01 PM, Paolo Bonzini wrote:

> bdrv_delete already does this.
> 
> Paolo


Ah yes. Thanks pointing out.

From 459414f677f6449482f9cfcb7917ff0e242ad490 Mon Sep 17 00:00:00 2001
From: Liu Yuan <tailai.ly@taobao.com>
Date: Wed, 11 Apr 2012 23:19:54 +0800
Subject: [PATCH v3] qemu-img: let 'qemu-img convert' flush data

The 'qemu-img convert -h' advertise that the default cache mode is
'writeback', while in fact it is 'unsafe'.

This patch 1) fix the help manual and 2) let bdrv_close() call bdrv_flush()

2) is needed because some backend storage doesn't have a self-flush
mechanism(for e.g., sheepdog), so we need to call bdrv_flush() to make
sure the image is really writen to the storage instead of hanging around
writeback cache forever.

Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
---
 block.c    |    1 +
 qemu-img.c |    4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

+           "    and 'unsafe' (default)\n"
            "  'size' is the disk image size in bytes. Optional suffixes\n"
            "    'k' or 'K' (kilobyte, 1024), 'M' (megabyte, 1024k), 'G'
(gigabyte, 1024M)\n"
            "    and T (terabyte, 1024G) are supported. 'b' is ignored.\n"

Comments

Liu Yuan April 13, 2012, 2:18 a.m. UTC | #1
On 04/11/2012 11:21 PM, Liu Yuan wrote:

> On 04/11/2012 11:01 PM, Paolo Bonzini wrote:
> 
>> bdrv_delete already does this.
>>
>> Paolo
> 
> 
> Ah yes. Thanks pointing out.
> 


Hi Kevin,
   If no further comment, would you pick up following patch?

Yuan

> From 459414f677f6449482f9cfcb7917ff0e242ad490 Mon Sep 17 00:00:00 2001
> From: Liu Yuan <tailai.ly@taobao.com>
> Date: Wed, 11 Apr 2012 23:19:54 +0800
> Subject: [PATCH v3] qemu-img: let 'qemu-img convert' flush data
> 
> The 'qemu-img convert -h' advertise that the default cache mode is
> 'writeback', while in fact it is 'unsafe'.
> 
> This patch 1) fix the help manual and 2) let bdrv_close() call bdrv_flush()
> 
> 2) is needed because some backend storage doesn't have a self-flush
> mechanism(for e.g., sheepdog), so we need to call bdrv_flush() to make
> sure the image is really writen to the storage instead of hanging around
> writeback cache forever.
> 
> Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
> ---
>  block.c    |    1 +
>  qemu-img.c |    4 ++--
>  2 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/block.c b/block.c
> index c0c90f0..1ee2bf0 100644
> --- a/block.c
> +++ b/block.c
> @@ -812,6 +812,7 @@ unlink_and_fail:
> 
>  void bdrv_close(BlockDriverState *bs)
>  {
> +    bdrv_flush(bs);
>      if (bs->drv) {
>          if (bs->job) {
>              block_job_cancel_sync(bs->job);
> diff --git a/qemu-img.c b/qemu-img.c
> index 6a61ca8..6e54db3 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -66,8 +66,8 @@ static void help(void)
>             "  'filename' is a disk image filename\n"
>             "  'fmt' is the disk image format. It is guessed
> automatically in most cases\n"
>             "  'cache' is the cache mode used to write the output disk
> image, the valid\n"
> -           "    options are: 'none', 'writeback' (default),
> 'writethrough', 'directsync'\n"
> -           "    and 'unsafe'\n"
> +           "    options are: 'none', 'writeback', 'writethrough',
> 'directsync'\n"
> +           "    and 'unsafe' (default)\n"
>             "  'size' is the disk image size in bytes. Optional suffixes\n"
>             "    'k' or 'K' (kilobyte, 1024), 'M' (megabyte, 1024k), 'G'
> (gigabyte, 1024M)\n"
>             "    and T (terabyte, 1024G) are supported. 'b' is ignored.\n"
Kevin Wolf April 13, 2012, 8:22 a.m. UTC | #2
Am 13.04.2012 04:18, schrieb Liu Yuan:
> On 04/11/2012 11:21 PM, Liu Yuan wrote:
> 
>> On 04/11/2012 11:01 PM, Paolo Bonzini wrote:
>>
>>> bdrv_delete already does this.
>>>
>>> Paolo
>>
>>
>> Ah yes. Thanks pointing out.
>>
> 
> 
> Hi Kevin,
>    If no further comment, would you pick up following patch?

Can you resend as a proper top-level v3 patch with git send-email? The
patch in this thread is line-wrapped.

Kevin
diff mbox

Patch

diff --git a/block.c b/block.c
index c0c90f0..1ee2bf0 100644
--- a/block.c
+++ b/block.c
@@ -812,6 +812,7 @@  unlink_and_fail:

 void bdrv_close(BlockDriverState *bs)
 {
+    bdrv_flush(bs);
     if (bs->drv) {
         if (bs->job) {
             block_job_cancel_sync(bs->job);
diff --git a/qemu-img.c b/qemu-img.c
index 6a61ca8..6e54db3 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -66,8 +66,8 @@  static void help(void)
            "  'filename' is a disk image filename\n"
            "  'fmt' is the disk image format. It is guessed
automatically in most cases\n"
            "  'cache' is the cache mode used to write the output disk
image, the valid\n"
-           "    options are: 'none', 'writeback' (default),
'writethrough', 'directsync'\n"
-           "    and 'unsafe'\n"
+           "    options are: 'none', 'writeback', 'writethrough',
'directsync'\n"