freebsd-nq/sys/ufs/ffs
Kirk McKusick 74a87c3804 Limit the number of cylinder groups that will be searched when
trying to build a cluster. The limit is tunable using the sysctl
vfs.ffs.maxclustersearch. The current limit is 10 cylinder groups
per block allocation. It was previously limited to the number of
cylinder groups in the filesystem per block allocation. When there
were no clusters of the needed size left, it repeatedly searched
the whole filesystem for a non-existent cluster on every block
allocation. The result was very slow filesystem allocation with
100% CPU utilization. The old behavior can be had by setting
vfs.ffs.maxclustersearch to a huge number (1,000,000).

This change affects only the layout policy routines so is not able
to interfere with the integrity of the filesystem.

Reported by: Dmitry Sivachenko (demon@)
Tested by:   Dmitry Sivachenko (demon@)
MFC after:   2 weeks
2015-04-24 23:27:50 +00:00
..
ffs_alloc.c Limit the number of cylinder groups that will be searched when 2015-04-24 23:27:50 +00:00
ffs_balloc.c
ffs_extern.h
ffs_inode.c
ffs_rawread.c Initialize the pbuf counter for directio using SYSINIT, instead of 2014-06-08 10:55:06 +00:00
ffs_snapshot.c The VOP_LOOKUP() implementations for CREATE op do not put the name 2014-12-18 10:01:12 +00:00
ffs_softdep.c Fix build (with gcc). 2015-03-27 15:49:21 +00:00
ffs_subr.c
ffs_suspend.c Include required files directly instead of pollution via ufs/ufsmount.h. 2014-11-23 01:01:14 +00:00
ffs_tables.c
ffs_vfsops.c Limit the number of cylinder groups that will be searched when 2015-04-24 23:27:50 +00:00
ffs_vnops.c Merge from projects/sendfile: 2014-11-23 12:01:52 +00:00
fs.h
softdep.h When mounting SU-enabled mount point, wait until the softdep_flush() 2015-01-30 11:41:46 +00:00