NOCOW has been a libvirt default since 6.6.0 whenever btrfs datastores are used, per libvirt docs. I've just stumbled across this thread while researching a thread over on the btrfs-progs git. btrfs with NOCOW is a data-eater, good for tmp or swap or scratch space and that's about it. I'm flabbergasted.