diff options
author | Brian Foster <bfoster@redhat.com> | 2012-11-06 09:50:47 -0500 |
---|---|---|
committer | Ben Myers <bpm@sgi.com> | 2012-11-08 15:34:59 -0600 |
commit | 579b62faa5fb16ffeeb88cda5e2c4e95730881af (patch) | |
tree | b0d71a823d2b6e5718786f99921968109d8f644e /fs/xfs/xfs_sysctl.c | |
parent | 00ca79a04bef1a1b30ef8afd992d905b6d986caf (diff) | |
download | linux-579b62faa5fb16ffeeb88cda5e2c4e95730881af.tar.gz linux-579b62faa5fb16ffeeb88cda5e2c4e95730881af.tar.bz2 linux-579b62faa5fb16ffeeb88cda5e2c4e95730881af.zip |
xfs: add background scanning to clear eofblocks inodes
Create a new mount workqueue and delayed_work to enable background
scanning and freeing of eofblocks inodes. The scanner kicks in once
speculative preallocation occurs and stops requeueing itself when
no eofblocks inodes exist.
The scan interval is based on the new
'speculative_prealloc_lifetime' tunable (default to 5m). The
background scanner performs unfiltered, best effort scans (which
skips inodes under lock contention or with a dirty cache mapping).
Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_sysctl.c')
-rw-r--r-- | fs/xfs/xfs_sysctl.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/xfs/xfs_sysctl.c b/fs/xfs/xfs_sysctl.c index ee2d2adaa438..2801b5ce6cdb 100644 --- a/fs/xfs/xfs_sysctl.c +++ b/fs/xfs/xfs_sysctl.c @@ -202,6 +202,15 @@ static ctl_table xfs_table[] = { .extra1 = &xfs_params.fstrm_timer.min, .extra2 = &xfs_params.fstrm_timer.max, }, + { + .procname = "speculative_prealloc_lifetime", + .data = &xfs_params.eofb_timer.val, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = &xfs_params.eofb_timer.min, + .extra2 = &xfs_params.eofb_timer.max, + }, /* please keep this the last entry */ #ifdef CONFIG_PROC_FS { |