-
Notifications
You must be signed in to change notification settings - Fork 7.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
disk_*_space uses statvfs on macOS and it returns inaccurate results for some filesystems #8048
Comments
Additionally, on FreeBSD there is a standards note: |
Looking at macOS's Libc-1353.11.2, it does a conversion from statfs to statvfs in libc. For reliable results, on macOS the source should be statfs(2) instead of statvfs(3). I suspect this is a good practice to do whenever statfs is also available. Linux my be the exception, I found a number of statements regarding Linux doing statvfs correctly while researching this issue. Code snip of the function: |
are you able to propose a PR eventually ? |
* PHP-8.0: Fix GH-8048: disk_*_space wrong for some filesystems on macOS
* PHP-8.1: Fix GH-8048: disk_*_space wrong for some filesystems on macOS
Thanks for the PR, and sorry it tooks so long to merge! The fix will only be available as of PHP 8.0.18 and 8.1.5, respectively. |
Description
The following code:
Resulted in this output:
But I expected this output instead:
The code works correctly for local filesystems, and fails on NFS.
If I remember correctly the posix standard is not required to provide correct information. Should php never be using the statvfs call?
Data points for NFS:
php total 198919206912
correct total 30985244784640
df total 30259028110
vfs total 194257038
fs f_bsize 512 vfs 1048576
fs f_iosize 1048576 vfs f_frsize 512
fs f_blocks 60518056220 vfs 388514076
fs f_bfree 20573829227 vfs 3393960043
fs f_bavail 20573829227 vfs 3393960043
Data points for local:
php total 245107195904 vfs 245107195904
correct total 245107195904
df total 3496966385312
vfs total 3496966385312
fs f_bsize 4096 vfs 1048576
fs f_iosize 1048576 vfs f_frsize 4096
fs f_blocks 59840624 vfs 59840624
fs f_bfree 5153807 vfs 5153807
fs f_bavail 5153807 vfs 5153807
PHP Version
PHP 7.4
Operating System
macOS 12.1
The text was updated successfully, but these errors were encountered: