block: Turn on "unmap" in active commit
authorFam Zheng <famz@redhat.com>
Tue, 27 Sep 2016 11:14:52 +0000 (19:14 +0800)
committerJeff Cody <jcody@redhat.com>
Tue, 1 Nov 2016 11:55:57 +0000 (07:55 -0400)
We already specified BDRV_O_UNMAP when opening images in 'qemu-img
commit', but didn't turn on the "unmap" in the active commit job. This
patch fixes that so that zeroed clusters in top image can be discarded
which is desired in the virt-sparsify use case, where a temporary
overlay is created and fstrim'ed before commiting back, to free space in
the original image.

This also enables it for block-commit.

Signed-off-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-id: 1474974892-5031-1-git-send-email-famz@redhat.com
Signed-off-by: Jeff Cody <jcody@redhat.com>
block/mirror.c

index 7e99f3a880fc3ece3557cbe3533b060f65be4fc3..82a952913815ac2a4aa1a9e170f423b27a68d795 100644 (file)
@@ -1081,7 +1081,7 @@ void commit_active_start(const char *job_id, BlockDriverState *bs,
 
     mirror_start_job(job_id, bs, base, NULL, speed, 0, 0,
                      MIRROR_LEAVE_BACKING_CHAIN,
-                     on_error, on_error, false, cb, opaque, &local_err,
+                     on_error, on_error, true, cb, opaque, &local_err,
                      &commit_active_job_driver, false, base, auto_complete);
     if (local_err) {
         error_propagate(errp, local_err);