|
From: | Nir Soffer |
Subject: | Re: [Qemu-block] [RFC PATCH 00/11] qcow2: External data files |
Date: | Thu, 31 Jan 2019 23:39:02 +0200 |
There are use cases where raw images are given (e.g. existing physical
disks), but advanced features like dirty bitmaps or backing files are
wanted that require use of a proper image format like qcow2.
This series adds an incompatible feature bit to qcow2 which allows to
use an external data file: Metadata is kept in the qcow2 file like
usual, but guest data is written to an external file. Clusters in the
data file are not reference counted, instead we use a flat layout where
host cluster offset == guest cluster offset. The external data file is
therefore readable as a raw image (though writing to it invalidates the
associated qcow2 metadata). Features that require refcounting such as
internal snapshots or compression are not supposed in such setups.
There are a few reasons why this is still RFC:
- The resulting code passes qemu-iotests, so we don't regress on normal
qcow2 files, but testing with external data files is still minimal
(converting an existing image and confirming it reads back unmodified;
installing a guest OS and making sure it boots). We need at least some
qemu-iotests cases.
- QAPI documentation is missing
- Discard isn't passed through to the data file yet
- s->image_data_file isn't correct, it gets the value from the attached
node rather than just from the image file. This means that on header
updates we might be writing "back" a path that wasn't there before.
- Probably something else I just can't remember now :-)
Kevin Wolf (11):
qcow2: Extend spec for external data files
qcow2: Basic definitions for external data files
qcow2: Pass bs to qcow2_get_cluster_type()
qcow2: Prepare qcow2_get_cluster_type() for external data file
qcow2: Prepare count_contiguous_clusters() for external data file
qcow2: Don't assume 0 is an invalid cluster offset
qcow2: External file I/O
qcow2: Add basic data-file infrastructure
qcow2: Creating images with external data file
qcow2: Store data file name in the image
qcow2: Add data file to ImageInfoSpecificQCow2
qapi/block-core.json | 5 +-
docs/interop/qcow2.txt | 19 ++++-
block/qcow2.h | 40 +++++++--
include/block/block_int.h | 1 +
block/qcow2-bitmap.c | 7 +-
block/qcow2-cache.c | 6 +-
block/qcow2-cluster.c | 144 +++++++++++++++++++-------------
block/qcow2-refcount.c | 40 ++++++---
block/qcow2-snapshot.c | 7 +-
block/qcow2.c | 166 ++++++++++++++++++++++++++++++++++---
tests/qemu-iotests/031.out | 8 +-
tests/qemu-iotests/036.out | 4 +-
tests/qemu-iotests/061.out | 14 ++--
tests/qemu-iotests/082.out | 27 ++++++
14 files changed, 372 insertions(+), 116 deletions(-)
--
2.20.1
[Prev in Thread] | Current Thread | [Next in Thread] |