On 7/20/20 7:33 PM, Daniel P. Berrangé wrote:
We already support a "nocow" flag for storage volumes, but this requires
extra work by the mgmt app or user when creating images on btrfs. We
want to "do the right thing" out of the box for btrfs.
We achieve this by changint the storage pool code so that when creating
a storage pool we always try to disable COW on btrfs filesystems. We
then add an <cow state="yes|no"/> feature in the pool XML to let apps
override the default logic.
The COW setting on the pool is inherited by any volumes.
The main thing not solved here is that the default directory at
/var/lib/libvirt/images is created by the RPM itself, not by a
normal "pool-build" command.
Fortunately it appears that virt-install will explicitly invoke a
storage pool build even if the directory already exists.
Daniel P. Berrangé (4):
util: add a helper method for controlling the COW flag on btrfs
storage: convert to use virFileSetCOW
storage: attempt to disable COW by default
conf: add control over COW for storage pool directories
docs/formatstorage.html.in | 25 +++++++
docs/schemas/storagepool.rng | 30 ++++++++
src/conf/storage_conf.c | 49 +++++++++++++
src/conf/storage_conf.h | 8 +++
src/libvirt_private.syms | 1 +
src/storage/storage_util.c | 46 +++++-------
src/util/virfile.c | 76 ++++++++++++++++++++
src/util/virfile.h | 3 +
tests/storagepoolxml2xmlin/pool-dir-cow.xml | 10 +++
tests/storagepoolxml2xmlout/pool-dir-cow.xml | 15 ++++
tests/storagepoolxml2xmltest.c | 1 +
11 files changed, 237 insertions(+), 27 deletions(-)
create mode 100644 tests/storagepoolxml2xmlin/pool-dir-cow.xml
create mode 100644 tests/storagepoolxml2xmlout/pool-dir-cow.xml
Reviewed-by: Michal Privoznik <mpriv...@redhat.com>
Michal