All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v3 0/2] qcow2: Patch for shrinking qcow2 disk image
@ 2014-10-13  5:04 Jun Li
  2014-10-13  5:04 ` [Qemu-devel] [PATCH v3 1/2] qcow2: Add qcow2_shrink_l1_and_l2_table for qcow2 shrinking Jun Li
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Jun Li @ 2014-10-13  5:04 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, juli, famz, Jun Li, stefanha

This is the third version for qcow2 shrinking. In this version, fixed host
cluster leak when shrinking a disk image. Such as:
Step 1,
# /opt/qemu-git-arm/bin/qemu-img info /home/lijun/Work/tmp/shrink.qcow2
image: /home/lijun/Work/tmp/shrink.qcow2
file format: qcow2
virtual size: 2.0G (2147483648 bytes)
disk size: 2.0G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    corrupt: false

Step 2,
# /opt/qemu-git-arm/bin/qemu-img resize /home/lijun/Work/tmp/shrink.qcow2 -100M
Image resized.

Step 3,
# /opt/qemu-git-arm/bin/qemu-img info /home/lijun/Work/tmp/shrink.qcow2
image: /home/lijun/Work/tmp/shrink.qcow2
file format: qcow2
virtual size: 1.9G (2042626048 bytes)
disk size: 1.9G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    corrupt: false

Step 4,
# /opt/qemu-git-arm/bin/qemu-img check /home/lijun/Work/tmp/shrink.qcow2
No errors were found on the image.
31005/31168 = 99.48% allocated, 0.79% fragmented, 0.00% compressed clusters
Image end offset: 2033844224

As above show, in step 1, "disk size" and "virtual size" are all 2.0G.
After Step 3, "disk size" and "virtual size" are all 1.9G.

BTW, above is also a simple testing. I will submit a test case for
qemu-iotests later. But I am not so familar with howto write qemu-iotests now.

In file block/qcow2.c, just using ftruncate to fix host cluster leak.

In file block/qcow2-cluster.c, just re-copy qcow2_grow_l1_table to
realize qcow2_shrink_l1_and_l2_table.

In file block/qcow2-refcount.c, also update the realization to handle self-describing
refcount blocks in function update_refcount.

Thanks.


Jun Li (2):
  qcow2: Add qcow2_shrink_l1_and_l2_table for qcow2 shrinking
  qcow2: add update refcount table realization for update_refcount

 block/qcow2-cluster.c  | 173 +++++++++++++++++++++++++++++++++++++++++++++++++
 block/qcow2-refcount.c |  44 +++++++++++++
 block/qcow2.c          |  40 ++++++++++--
 block/qcow2.h          |   2 +
 4 files changed, 255 insertions(+), 4 deletions(-)

-- 
1.9.3

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-10-14 17:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-13  5:04 [Qemu-devel] [PATCH v3 0/2] qcow2: Patch for shrinking qcow2 disk image Jun Li
2014-10-13  5:04 ` [Qemu-devel] [PATCH v3 1/2] qcow2: Add qcow2_shrink_l1_and_l2_table for qcow2 shrinking Jun Li
2014-10-14 17:58   ` Jun Li
2014-10-13  5:04 ` [Qemu-devel] [PATCH v3 2/2] qcow2: add update refcount table realization for update_refcount Jun Li
2014-10-14 17:57   ` Jun Li
2014-10-14 17:56 ` [Qemu-devel] [PATCH v3 0/2] qcow2: Patch for shrinking qcow2 disk image Jun Li

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.