Moved from Ext4 to BTRFS, now quotas have no effect

$ sudo btrfs qgroup show /var/lib/incus/storage-pools/base-btrfs
Qgroupid    Referenced    Exclusive   Path 
--------    ----------    ---------   ---- 
0/5           16.00KiB     16.00KiB   <toplevel>
0/256        758.01MiB    758.01MiB   containers/MyCloudContainer
0/257          3.06GiB     67.43MiB   containers-snapshots/MyContainerName/punt1
0/258         13.07GiB     65.02MiB   containers-snapshots/MyContainerName/punt2
0/259         13.07GiB     29.93MiB   containers-snapshots/MyContainerName/punt3
0/260          3.09GiB    240.00KiB   containers-snapshots/MyContainerName/punt4
0/261          3.09GiB    100.00KiB   containers-snapshots/MyContainerName/punt5
0/262          3.09GiB    104.00KiB   containers-snapshots/MyContainerName/punt6
0/263          3.09GiB    140.00KiB   containers-snapshots/MyContainerName/punt7
0/264          3.16GiB     80.16MiB   containers/MyContainerName
0/265        523.62MiB    523.62MiB   containers/MyContainerName3
0/266         38.74GiB     38.74GiB   virtual-machines/MyMachine
0/267        121.33MiB    121.33MiB   containers/debian
0/268        373.64MiB    373.64MiB   containers/frxyt
0/269        178.86MiB    178.86MiB   containers/gentle-tetra
0/270        101.58MiB    101.58MiB   containers/ubuntu
0/271        101.74MiB    101.74MiB   containers/ubuntu2
0/272          3.53GiB      3.53GiB   containers/webtop
0/273          3.71GiB      3.71GiB   custom/default_debian-13.6.0-amd64-DVD-1.iso.iso

$ incus exec MyContainerName -- df -hT /
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/loop0     btrfs  1.0T   62G  962G   7% /

$ incus config device set MyContainerName root size=10GiB

$ incus exec MyContainerName -- dd if=/dev/urandom of=out.img bs=4M count=1000
1000+0 records in
1000+0 records out
4194304000 bytes (4.2 GB, 3.9 GiB) copied, 200.673 s, 20.9 MB/s

$ sudo btrfs qgroup show /var/lib/incus/storage-pools/base-btrfs
Qgroupid    Referenced    Exclusive   Path 
--------    ----------    ---------   ---- 
0/5           16.00KiB     16.00KiB   <toplevel>
0/256        758.01MiB    758.01MiB   containers/MyCloudContainer
0/257          3.06GiB     67.43MiB   containers-snapshots/MyContainerName/punt1
0/258         13.07GiB     65.02MiB   containers-snapshots/MyContainerName/punt2
0/259         13.07GiB     29.93MiB   containers-snapshots/MyContainerName/punt3
0/260          3.09GiB    240.00KiB   containers-snapshots/MyContainerName/punt4
0/261          3.09GiB    100.00KiB   containers-snapshots/MyContainerName/punt5
0/262          3.09GiB    104.00KiB   containers-snapshots/MyContainerName/punt6
0/263          3.09GiB    140.00KiB   containers-snapshots/MyContainerName/punt7
0/264          7.07GiB      3.98GiB   containers/MyContainerName
0/265        523.62MiB    523.62MiB   containers/MyContainerName3
0/266         38.74GiB     38.74GiB   virtual-machines/MyMachine
0/267        121.33MiB    121.33MiB   containers/debian
0/268        373.64MiB    373.64MiB   containers/frxyt
0/269        178.86MiB    178.86MiB   containers/gentle-tetra
0/270        101.58MiB    101.58MiB   containers/ubuntu
0/271        101.74MiB    101.74MiB   containers/ubuntu2
0/272          3.53GiB      3.53GiB   containers/webtop
0/273          3.71GiB      3.71GiB   custom/default_debian-13.6.0-amd64-DVD-1.iso.iso

$ incus exec MyContainerName -- dd if=/dev/urandom of=out2.img bs=4M count=1000
dd: error writing 'out2.img': Disk quota exceeded
751+0 records in
750+0 records out
3148906496 bytes (3.1 GB, 2.9 GiB) copied, 158.445 s, 19.9 MB/s

$ sudo btrfs qgroup show /var/lib/incus/storage-pools/base-btrfs
Qgroupid    Referenced    Exclusive   Path 
--------    ----------    ---------   ---- 
0/5           16.00KiB     16.00KiB   <toplevel>
0/256        758.01MiB    758.01MiB   containers/MyCloudContainer
0/257          3.06GiB     67.43MiB   containers-snapshots/MyContainerName/punt1
0/258         13.07GiB     65.02MiB   containers-snapshots/MyContainerName/punt2
0/259         13.07GiB     29.93MiB   containers-snapshots/MyContainerName/punt3
0/260          3.09GiB    240.00KiB   containers-snapshots/MyContainerName/punt4
0/261          3.09GiB    100.00KiB   containers-snapshots/MyContainerName/punt5
0/262          3.09GiB    104.00KiB   containers-snapshots/MyContainerName/punt6
0/263          3.09GiB    140.00KiB   containers-snapshots/MyContainerName/punt7
0/264         10.00GiB      6.92GiB   containers/MyContainerName
0/265        523.62MiB    523.62MiB   containers/MyContainerName3
0/266         38.74GiB     38.74GiB   virtual-machines/MyMachine
0/267        121.33MiB    121.33MiB   containers/debian
0/268        373.64MiB    373.64MiB   containers/frxyt
0/269        178.86MiB    178.86MiB   containers/gentle-tetra
0/270        101.58MiB    101.58MiB   containers/ubuntu
0/271        101.74MiB    101.74MiB   containers/ubuntu2
0/272          3.53GiB      3.53GiB   containers/webtop
0/273          3.71GiB      3.71GiB   custom/default_debian-13.6.0-amd64-DVD-1.iso.iso

$ incus exec MyContainerName -- df -hT /
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/loop0     btrfs  1.0T   69G  955G   7% /

$ stat -f /var
  File: "/var"
    ID: 72f8e18dd1662070 Namelen: 255     Type: btrfs
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 472627712  Free: 216717694  Available: 216325830
Inodes: Total: 0          Free: 0

$ incus exec MyContainerName -- stat -f /
  File: "/"
    ID: 907f40a282cd8d08 Namelen: 255     Type: btrfs
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 268435456  Free: 250434694  Available: 250316274
Inodes: Total: 0          Free: 0

Okay, quota limit is working although is not seen as used/available space by guest.

To see right numbers, What does df depend on?

Thank you.

df uses a direct statvfs system call, the kernel doesn’t consider btrfs qgroups when returning disk usage.