Merge branch 'ufs-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull more ufs fixes from Al Viro: "More UFS fixes, unfortunately including build regression fix for the 64-bit s_dsize commit. Fixed in this pile: - trivial bug in signedness of 32bit timestamps on ufs1 - ESTALE instead of ufs_error() when doing open-by-fhandle on something deleted - build regression on 32bit in ufs_new_fragments() - calculating that many percents of u64 pulls libgcc stuff on some of those. Mea culpa. - fix hysteresis loop broken by typo in 2.4.14.7 (right next to the location of previous bug). - fix the insane limits of said hysteresis loop on filesystems with very low percentage of reserved blocks. If it's 5% or less, just use the OPTSPACE policy. - calculate those limits once and mount time. This tree does pass xfstests clean (both ufs1 and ufs2) and it _does_ survive cross-builds. Again, my apologies for missing that, especially since I have noticed a related percentage-of-64bit issue in earlier patches (when dealing with amount of reserved blocks). Self-LART applied..." * 'ufs-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: ufs: fix the logics for tail relocation ufs_iget(): fail with -ESTALE on deleted inode fix signedness of timestamps on ufs1
This commit is contained in:
@@ -1210,6 +1210,15 @@ magic_found:
|
||||
|
||||
uspi->s_root_blocks = mul_u64_u32_div(uspi->s_dsize,
|
||||
uspi->s_minfree, 100);
|
||||
if (uspi->s_minfree <= 5) {
|
||||
uspi->s_time_to_space = ~0ULL;
|
||||
uspi->s_space_to_time = 0;
|
||||
usb1->fs_optim = cpu_to_fs32(sb, UFS_OPTSPACE);
|
||||
} else {
|
||||
uspi->s_time_to_space = (uspi->s_root_blocks / 2) + 1;
|
||||
uspi->s_space_to_time = mul_u64_u32_div(uspi->s_dsize,
|
||||
uspi->s_minfree - 2, 100) - 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Compute another frequently used values
|
||||
|
Reference in New Issue
Block a user