Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[POSIX] Pass path to df(1) reference rather than device
Otherwise this test fails for environments with active bind-mounts. For example, consider the following: $ mount test.img testdir $ mount --rbind /usr/src testdir/usr/src $ chroot testdir /bin/bash $ python3 Python 3.11.6 (main, Dec 5 2023, 11:03:00) [GCC 13.2.1 20230826] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import psutil, pprint >>> pprint.pprint(psutil.disk_partitions(all=False)) [sdiskpart(device='/dev/loop0', mountpoint='/', fstype='ext4', opts='rw,relatime', maxfile=255, maxpath=4096), sdiskpart(device='/dev/loop0', mountpoint='/usr/src', fstype='ext4', opts='ro,noatime', maxfile=255, maxpath=4096)] >>> pprint.pprint([psutil.disk_usage(x.mountpoint) for x in psutil.disk_partitions(all=False)]) [sdiskusage(total=20530814976, used=7411703808, free=12053757952, percent=38.1), sdiskusage(total=134679105536, used=42708791296, free=85081747456, percent=33.4)] >>> $ df / && df /usr/src Filesystem 1K-blocks Used Available Use% Mounted on /dev/loop0 20049624 7237992 11771248 39% / Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 131522564 41707804 83087644 34% /usr/src Note that psutil has the correct size data, but the wrong block device. If we pass the path to df(1) instead of the incorrect block device, then df(1) will return results from the correct filesystem.
- Loading branch information