diff mbox

[v2] blockdev: unset inappropriate flags when changing medium

Message ID 20160206133618.GA16635@li141-249.members.linode.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alyssa Milburn Feb. 6, 2016, 1:36 p.m. UTC
Most importantly, this removes BDRV_O_TEMPORARY, to avoid unlink()ing an
image which replaces a snapshotted one.

Signed-off-by: Alyssa Milburn <fuzzie@fuzzie.org>
---
 blockdev.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Max Reitz Feb. 6, 2016, 2:39 p.m. UTC | #1
On 06.02.2016 14:36, Alyssa Milburn wrote:
> Most importantly, this removes BDRV_O_TEMPORARY, to avoid unlink()ing an
> image which replaces a snapshotted one.
> 
> Signed-off-by: Alyssa Milburn <fuzzie@fuzzie.org>
> ---
>  blockdev.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/blockdev.c b/blockdev.c
> index be4ca44..a916b06 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -2514,6 +2514,8 @@ void qmp_blockdev_change_medium(const char *device, const char *filename,
>      }
>  
>      bdrv_flags = blk_get_open_flags_from_root_state(blk);
> +    bdrv_flags &= ~(BDRV_O_TEMPORARY | BDRV_O_SNAPSHOT | BDRV_O_NO_BACKING |
> +        BDRV_O_PROTOCOL);
>  
>      if (!has_read_only) {
>          read_only = BLOCKDEV_CHANGE_READ_ONLY_MODE_RETAIN;
> 

Thanks, applied to my block tree:

https://github.com/XanClic/qemu/commits/block

Max
diff mbox

Patch

diff --git a/blockdev.c b/blockdev.c
index be4ca44..a916b06 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -2514,6 +2514,8 @@  void qmp_blockdev_change_medium(const char *device, const char *filename,
     }
 
     bdrv_flags = blk_get_open_flags_from_root_state(blk);
+    bdrv_flags &= ~(BDRV_O_TEMPORARY | BDRV_O_SNAPSHOT | BDRV_O_NO_BACKING |
+        BDRV_O_PROTOCOL);
 
     if (!has_read_only) {
         read_only = BLOCKDEV_CHANGE_READ_ONLY_MODE_RETAIN;