You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
checked with 0.0.12 (and 0.0.8)
When running
df -h /my_fs
instead of just checking /my_fs, df iterates through every mounted filesystem with a statx e.g. statx(AT_FDCWD, "/data/something", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0
This may be fine with only a few mounts, but when a system has hundreds of mounts it can take some time to return results when the system is under load and run for the first time. gnu df also had this/similar problem but was addressed a long time ago I believe. Wondering if there was a way to only iterate the mount of interest and skip the rest in this case?
The text was updated successfully, but these errors were encountered:
I don't believe it does - I grabbed the latest git version - same problem, Then grabbed the updated df.rs file from the above out of tree and it also shows the same behaviour.
I think this issue is not specific to df. This issue is created because when uucore::fsext::read_fs_list is invoked, it will create a mount entry for every line read from mtab file and while creation it will call set_missing_fields() which calls std::fs::metadata() for each entry read from mount_info. This will internally make a syscall statx.
checked with 0.0.12 (and 0.0.8)
When running
df -h /my_fs
instead of just checking /my_fs, df iterates through every mounted filesystem with a statx e.g.
statx(AT_FDCWD, "/data/something", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0
This may be fine with only a few mounts, but when a system has hundreds of mounts it can take some time to return results when the system is under load and run for the first time. gnu df also had this/similar problem but was addressed a long time ago I believe. Wondering if there was a way to only iterate the mount of interest and skip the rest in this case?
The text was updated successfully, but these errors were encountered: