How bad really are VMs on btrfs?

There are a lot of warnings against using btrfs with VMs on the btrfs documentation page. Indeed, it says “you should never use VMs with Btrfs storage pools”

I am nowhere near an expert on file systems, but with btrfs being built into the kernel, but having to deal with building ZFS and worry about future kernel updates (not to mention having to patch GPL-only symbols out of kernels in aarch64 and so on), there is a lot of convenience to use btrfs.

I am curious if there have been any improvements to btrfs which make it more appropriate for running VMs, or if it’s a lost cause. For example, simple quota accounting was added in kernel 6.7 and I know there were troubles caused with quotas with VMs – is this something that helps with incus and VMs? Or have any of the other recent BTRFS improvements made any difference?

I had thought that incus uses nodatacow on BTRFS which should, I thought, solve some problems with VMs.

If using VMs, are the only viable options really just ZFS and LLVM thin pools at present?

Then one other question, with the design of the upcoming bcachefs, will this be appropriate for VMs in the future?

I remember at the time of LXD 4.20, there was a lot of discussions around problem with BTRFS quota and VM. I don’t know if it’s better know, but in the past, this wasn’t great

I’m using btrfs (without quotas) for containers as long as LXD/Incus exist and no single issue. But why would you use it for VMs? It’s more efficient to use LVM probably, without any filesystem in between.