qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH V20 0/7] add-cow file format


From: Dong Xu Wang
Subject: [Qemu-devel] [PATCH V20 0/7] add-cow file format
Date: Mon, 26 Aug 2013 00:06:12 +0800

It will introduce a new file format: add-cow.

The add-cow file format makes it possible to perform copy-on-write on top of
a raw disk image.  When we know that no backing file clusters remain visible
(e.g. we have streamed the entire image and copied all data from the backing
file), then it is possible to discard the add-cow file and use the raw image
file directly.

This feature adds the copy-on-write feature to raw files (which cannot support
it natively) while allowing us to get full performance again later when we no
longer need copy-on-write.

add-cow can benefit from other available functions, such as path_has_protocol
and qed_read_string, so we will make them public.

snapshot_blkdev are not supported now for add-cow. Will add it in futher 
patches.

These patches are using QemuOpts parser, former patches could be found here:
http://patchwork.ozlabs.org/patch/266693/


v19->v20:
1) reorganize patch order.
2) fix AddCowMeta's logic while add-cow is being written. 

Add-cow is not real parallel now, it also has to track image_hd's meta data. I 
will
quit from QEMU soon, so I am wondering if it is possible to optimize it later.

v18->v19:
1) squash one patch into another one.
2) fix meta clean up logic.

v17 -> v18:
1) remove version field.
2) header size is maximum value and cluster size value.
3) fix type.
4) move struct to source file.
5) cluster_size->table_size.
6) use error_report, not fprintf.
7) remove version field from header.
8) header_size is MAX(cluster_size, 4096).
9) introduce s->cluster_sectors.
10) use BLKDBG_L2_LOAD/UPDATE.
11) add 037 and 038 tests.

v16->v17):
1) Use stringify.

v15->v16):
1) Rebased on QEMU upstream source tree.
2) Judge if opts is null in add_cow_create function.

v14->v15:
1) Fix typo and make some sentences more readable in docs.
2) Introduce STRINGIZER macro.

v13->v14:
1) Make some sentences more clear in docs.
2) Make MAGIC from 8 bytes to 4 bytes.
3) Fix some bugs.

v12->v13:
1) Use QemuOpts, not QEMUOptionParameter
2) cluster_size configuable
3) Refactor block-cache.c
4) Correct qemu-iotests script.
5) Other bug fix.

v11->v12:
1) Removed un-used feature bit.
2) Share cache code with qcow2.c.
3) Remove snapshot_blkdev support, will add it in another patch.
5) COW Bitmap field in add-cow file will be multiple of 65536.
6) fix grammer and typo.


Dong Xu Wang (8):
  docs: document for add-cow file format
  make path_has_protocol non static
  qed_read_string to bdrv_read_string
  rename qcow2_cache functions to block_cache
  move qcow2-cache.c to block-cache.c
  Make block-cache.c be common interface
  add-cow file format core code
  qemu-iotests: add add-cow iotests support

 block.c                      |  29 +-
 block/Makefile.objs          |   4 +-
 block/add-cow.c              | 824 +++++++++++++++++++++++++++++++++++++++++++
 block/block-cache.c          | 342 ++++++++++++++++++
 block/block-cache.h          |  59 ++++
 block/qcow2-cache.c          | 323 -----------------
 block/qcow2-cluster.c        |  48 +--
 block/qcow2-refcount.c       |  42 +--
 block/qcow2.c                |  21 +-
 block/qcow2.h                |  25 +-
 block/qed.c                  |  34 +-
 docs/specs/add-cow.txt       | 172 +++++++++
 include/block/block.h        |   6 +
 include/block/block_int.h    |   2 +
 tests/qemu-iotests/017       |   2 +-
 tests/qemu-iotests/020       |   2 +-
 tests/qemu-iotests/037       |   2 +-
 tests/qemu-iotests/038       |   2 +-
 tests/qemu-iotests/common    |   5 +
 tests/qemu-iotests/common.rc |  15 +-
 trace-events                 |  12 +-
 21 files changed, 1529 insertions(+), 442 deletions(-)
 create mode 100644 block/add-cow.c
 create mode 100644 block/block-cache.c
 create mode 100644 block/block-cache.h
 delete mode 100644 block/qcow2-cache.c
 create mode 100644 docs/specs/add-cow.txt

-- 
1.7.11.7




reply via email to

[Prev in Thread] Current Thread [Next in Thread]