On Sun, Aug 11, 2024 at 17:34:45 +0300, Nikolai Barybin via Devel wrote: > There are use cases when the existing disks (i.e. LVM) are wanted > to be used with advanced features. For this purpose QEMU allows > data-file feature for qcow2 files: metadata is kept in the qcow2 > file like usual, but guest data is written to an external file. > These patches enable support for this feature in libvirt. So this feature was once attempted to be added but was never finished and the comitted bits were reverted eventually. (I've purged my local archive so I don't have the link handy but I can look if you want the links to the old posting) It was deemed that this doesn't really add any performance benefit over storing the actual qcow2 with data inside. The qcow2 with data can be stored inside the LV or other block device for that matter and thus can provide all features that are necessary. The data file feature makes also the management of the metadata and data much more complex, for a very bad trade-off. At this point with 'qemu-img measure' it's easy to query the necessary size to have a fully allocated qcow2 inside the block device. Based on the history of this I'd like to ask you to summarize justifications and reasons for adding this feature before continuing. > Nikolai Barybin (3): > conf: add data-file feature and related fields to virStorageSource > storage: add qcow2 filename parsing from header > qemu: enable qcow2 data-file attach to VM on start > > src/conf/storage_source_conf.c | 8 ++++ > src/conf/storage_source_conf.h | 5 ++ > src/qemu/qemu_block.c | 45 ++++++++++++++++++ > src/qemu/qemu_cgroup.c | 3 ++ > src/qemu/qemu_namespace.c | 6 +++ > src/storage_file/storage_file_probe.c | 66 +++++++++++++++++++++++---- > src/storage_file/storage_source.c | 38 ++++++++++++++- A quick skim through the pathces shows following bits missing: - any form of tests - XML formating and parsing of the path (needed as you need the path of the data file to be user-configurable for cases when user declares the backing chain in the XML and also to be overridable. Additionally we need to record the path for cases when libvirtd/virtqemud restarts as we must not try to re-probe the image afterwards) - security driver intergration (any of the above will not work if the data file is not accessible as it won't be chown'd/relabelled) Few more comments inline.