1 fs: add dirtytime_expire_seconds sysctl
3 Add a tuning knob so we can adjust the dirtytime expiration timeout,
4 which is very useful for testing lazytime.
6 Signed-off-by: Theodore Ts'o <tytso@mit.edu>
8 fs/fs-writeback.c | 5 ++++-
9 include/linux/writeback.h | 1 +
10 kernel/sysctl.c | 8 ++++++++
11 3 files changed, 13 insertions(+), 1 deletion(-)
13 diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
14 index e907052..705f036 100644
15 --- a/fs/fs-writeback.c
16 +++ b/fs/fs-writeback.c
17 @@ -53,6 +53,9 @@ struct wb_writeback_work {
18 struct completion *done; /* set if the caller waits */
21 +/* 24 hours in seconds */
22 +unsigned int dirtytime_expire_interval = 24 * 60 * 60;
25 * writeback_in_progress - determine whether there is writeback in progress
26 * @bdi: the device's backing_dev_info structure.
27 @@ -276,7 +279,7 @@ static int move_expired_inodes(struct list_head *delaying_queue,
28 if ((flags & EXPIRE_DIRTY_ATIME) == 0)
29 older_than_this = work->older_than_this;
30 else if ((work->reason == WB_REASON_SYNC) == 0) {
31 - expire_time = jiffies - (HZ * 86400);
32 + expire_time = jiffies - (dirtytime_expire_interval * HZ);
33 older_than_this = &expire_time;
35 while (!list_empty(delaying_queue)) {
36 diff --git a/include/linux/writeback.h b/include/linux/writeback.h
37 index 0004833..ba65fd0 100644
38 --- a/include/linux/writeback.h
39 +++ b/include/linux/writeback.h
40 @@ -130,6 +130,7 @@ extern int vm_dirty_ratio;
41 extern unsigned long vm_dirty_bytes;
42 extern unsigned int dirty_writeback_interval;
43 extern unsigned int dirty_expire_interval;
44 +extern unsigned int dirtytime_expire_interval;
45 extern int vm_highmem_is_dirtyable;
46 extern int block_dump;
47 extern int laptop_mode;
48 diff --git a/kernel/sysctl.c b/kernel/sysctl.c
49 index 88ea2d6..44e6a25 100644
52 @@ -1228,6 +1228,14 @@ static struct ctl_table vm_table[] = {
56 + .procname = "dirtytime_expire_seconds",
57 + .data = &dirtytime_expire_interval,
58 + .maxlen = sizeof(dirty_expire_interval),
60 + .proc_handler = proc_dointvec_minmax,
64 .procname = "nr_pdflush_threads",
65 .mode = 0444 /* read-only */,
66 .proc_handler = pdflush_proc_obsolete,