I did some more investigation with stat(2). Running native on FreeBSD
with Python os package 'st_dev':
$ df -t ufs | cut -f 6 -w | sed 1d | xargs -I% python ~/stat.py %
/: 108
/tmp: 110
/var: 111
/var/tmp: 112
/usr: 113
/usr/local: 161
/usr/ports: 142
/usr/obj: 141
/usr/local/pgsql: 140
/var/nexus2: 162
/var/svn: 163
/var/osipovmi: 164
/var/poudriere: 166
/compat: 165
/usr/local/bastille: 139
Now with a modified version of GNU df(1) compiled on Linux, running on
FreeBSD:
$ ./df -a -B 512 -P -t ufs -T
/: 108
/tmp: 165
/var: 165
/var/tmp: 112
/usr: 165
/usr/local: 161
/usr/ports: 142
/usr/obj: 141
/usr/local/pgsql: 140
/var/nexus2: 162
/var/svn: 163
/var/osipovmi: 164
/var/poudriere: 166
/compat: 165
/usr/local/bastille: 139
One can clearly see that the dev ids do not match. There seems to be a
bug in the layer. I will investigate on FreeBSD 15 and report upstream.
Let's pause this one for a moment.