mirror of
https://git.openafs.org/openafs.git
synced 2025-01-19 23:40:13 +00:00
Use f_bsize for ZFS afs_fsfragsize
On ZFS, the disk space files can use up can be rounded up to the next recordsize boundary if they've been truncated. This can cause the Unix CM to mis-estimate cache usage, since it truncates files fairly often, and assumes the disk space used is the file length rounded up to the next f_frsize. Since the ZFS recordsize is available via the statvfs f_bsize, just round up to that instead. There is still some additional file metadata that takes up some additional space on disk, but according to ZFS people I've spoken to about this, it cannot be known in advance. In practice, the additional metadata storage doesn't appear to exceed about 10% of the data storage, which should be acceptable. FIXES 125365 Reviewed-on: http://gerrit.openafs.org/650 Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Andrew Deason <adeason@sinenomine.net>
This commit is contained in:
parent
82aa5b4e09
commit
78d8b8c5c1
@ -425,7 +425,17 @@ afs_InitCacheInfo(register char *afile)
|
||||
if (!VFS_STATFS(filevp->v_vfsp, &st))
|
||||
#endif /* SGI... */
|
||||
#if defined(AFS_SUN5_ENV) || defined(AFS_HPUX100_ENV)
|
||||
afs_fsfragsize = st.f_frsize - 1;
|
||||
if (strcmp("zfs", st.f_basetype) == 0) {
|
||||
/*
|
||||
* Files in ZFS can take up to around the next
|
||||
* recordsize boundary after being truncated. recordsize
|
||||
* is reported in statvfs by f_bsize, so use that
|
||||
* instead.
|
||||
*/
|
||||
afs_fsfragsize = st.f_bsize - 1;
|
||||
} else {
|
||||
afs_fsfragsize = st.f_frsize - 1;
|
||||
}
|
||||
#else
|
||||
afs_fsfragsize = st.f_bsize - 1;
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user