qcow2: Optimize bdrv_make_empty()
authorMax Reitz <mreitz@redhat.com>
Fri, 24 Oct 2014 13:57:32 +0000 (15:57 +0200)
committerStefan Hajnoczi <stefanha@redhat.com>
Mon, 3 Nov 2014 11:41:48 +0000 (11:41 +0000)
commit94054183daffaa41cd77ced9301c01a01027923a
tree75c6d4efe55d181cee75d7e3eaaf59ecbf1e9aa5
parent491d27e2af4f6e157c4b29d43269c5cb0d191171
qcow2: Optimize bdrv_make_empty()

bdrv_make_empty() is currently only called if the current image
represents an external snapshot that has been committed to its base
image; it is therefore unlikely to have internal snapshots. In this
case, bdrv_make_empty() can be greatly sped up by emptying the L1 and
refcount table (while having the dirty flag set, which only works for
compat=1.1) and creating a trivial refcount structure.

If there are snapshots or for compat=0.10, fall back to the simple
implementation (discard all clusters).

[Applied s/clusters/cluster/ typo fix suggested by Eric Blake
--Stefan]

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-id: 1414159063-25977-4-git-send-email-mreitz@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
block/blkdebug.c
block/qcow2.c
include/block/block.h