On 9/9/19 7:15 PM, Jonathon A Anderson wrote:
> I expect that BeeGFS hasn't been used / tested / supported on btrfs. btrfs doesn't have inodes, so BeeGFS is probably just picking up the reported inodes as seen in df.
>
> ```
> $ df -it btrfs
> Filesystem Inodes IUsed IFree IUse% Mounted on
> /dev/sdb1 0 0 0 - /srv/civilfritz
> ```
>
> Presumably the btrfs devs have inflexible opinions about reporting zero for inodes; so BeeGFS will probably need to detect btrfs and not check inode availability when determining capacity pools.
>
> ~jonathon
To spell this correctly out, BeeGFS is detecting if it is running on
BTRFS in order to set the right value of the global variable outSizeFree
, but uses the raw values of statfs.f_files and statfs.f_ffree from the
statfs call. As well statfs.f_files and statfs.f_ffree are 0 on btrfs,
because on BTRFS there free inodes as long as there are free blocks.
This holds also true for xfs, but the statfs on xfs provides some
theoretical values for the inodes, so that BeeGFS works with xfs. A fix
could be, to use f_bfree and f_blocks on BTRFS, but this has to be done
by ThinkParq as its not possible to contribute to the BeeGFS source code.
kind regards,
Christian