diff mbox

qemu-img: allow rebase to a NULL backing file when unsafe

Message ID 1302706307-16627-1-git-send-email-stefanha@linux.vnet.ibm.com
State New
Headers show

Commit Message

Stefan Hajnoczi April 13, 2011, 2:51 p.m. UTC
From: Anthony Liguori <aliguori@us.ibm.com>

QEMU can drop a backing file so that an image file no longer depends on
the backing file, but this feature has not been exposed in qemu-img.
This is useful in an image streaming usecase or when an image file has
been fully allocated and no reads can hit the backing file anymore.

Since the dropping the backing file can make the image unusable, only
allow this when the unsafe flag has been set.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
---
 qemu-img.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

Kevin Wolf April 14, 2011, 8:58 a.m. UTC | #1
Am 13.04.2011 16:51, schrieb Stefan Hajnoczi:
> From: Anthony Liguori <aliguori@us.ibm.com>
> 
> QEMU can drop a backing file so that an image file no longer depends on
> the backing file, but this feature has not been exposed in qemu-img.
> This is useful in an image streaming usecase or when an image file has
> been fully allocated and no reads can hit the backing file anymore.
> 
> Since the dropping the backing file can make the image unusable, only
> allow this when the unsafe flag has been set.

I think it would also make sense to allow it in safe mode, it would have
the same effect as rebasing onto an empty new backing file. Might take
more than a one-liner, though.

In case you need a workaround for older qemu-img versions, -b "" works,
too (at least for qcow2).

> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
> Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
> ---
>  qemu-img.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/qemu-img.c b/qemu-img.c
> index d9c2c12..ed5ba91 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -1240,7 +1240,7 @@ static int img_rebase(int argc, char **argv)
>          }
>      }
>  
> -    if ((optind >= argc) || !out_baseimg) {
> +    if ((optind >= argc) || (!unsafe && !out_baseimg)) {
>          help();
>      }
>      filename = argv[optind++];

Thanks, applied to the block branch.

Kevin
diff mbox

Patch

diff --git a/qemu-img.c b/qemu-img.c
index d9c2c12..ed5ba91 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -1240,7 +1240,7 @@  static int img_rebase(int argc, char **argv)
         }
     }
 
-    if ((optind >= argc) || !out_baseimg) {
+    if ((optind >= argc) || (!unsafe && !out_baseimg)) {
         help();
     }
     filename = argv[optind++];