diff options
author | Kevin Wolf <kwolf@redhat.com> | 2013-09-06 12:20:08 +0200 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2013-09-12 10:12:46 +0200 |
commit | 1ebf561c11302f4fbe4afdd82758fe053cf1d5fc (patch) | |
tree | 97ddd797d3feefe5751a858b3b2df42efbd3dea1 /block/qcow2.h | |
parent | 670df5e3b4b5ef830a7c3c970170dbfa11cbb8d2 (diff) | |
download | qemu-1ebf561c11302f4fbe4afdd82758fe053cf1d5fc.zip qemu-1ebf561c11302f4fbe4afdd82758fe053cf1d5fc.tar.gz qemu-1ebf561c11302f4fbe4afdd82758fe053cf1d5fc.tar.bz2 |
qcow2: Discard VM state in active L1 after creating snapshot
During savevm, the VM state is written to the active L1 of the image and
then a snapshot is taken. After that, the VM state isn't needed any more
in the active L1 and should be discarded. This is implemented by this
patch.
The impact of not discarding the VM state is that a snapshot can never
become smaller than any previous snapshot (because it would be padded
with old VM state), and more importantly that future savevm operations
cause unnecessary COWs (with associated flushes), which makes subsequent
snapshots much slower.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'block/qcow2.h')
-rw-r--r-- | block/qcow2.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/block/qcow2.h b/block/qcow2.h index 9c33b98..49eed82 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -361,6 +361,11 @@ static inline int64_t align_offset(int64_t offset, int n) return offset; } +static inline int64_t qcow2_vm_state_offset(BDRVQcowState *s) +{ + return (int64_t)s->l1_vm_state_index << (s->cluster_bits + s->l2_bits); +} + static inline int qcow2_get_cluster_type(uint64_t l2_entry) { if (l2_entry & QCOW_OFLAG_COMPRESSED) { |