diff options
author | Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2012-07-25 18:11:59 +0300 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-08-04 01:24:44 +0400 |
commit | f0cd2dbb6cf387c11f87265462e370bb5469299e (patch) | |
tree | 21c9b6237dd9131763654a6cd715461177701607 /mm/page-writeback.c | |
parent | d42d1dabf34bdd5ad832cb56a7338817aad8a052 (diff) | |
download | lwn-f0cd2dbb6cf387c11f87265462e370bb5469299e.tar.gz lwn-f0cd2dbb6cf387c11f87265462e370bb5469299e.zip |
vfs: kill write_super and sync_supers
Finally we can kill the 'sync_supers' kernel thread along with the
'->write_super()' superblock operation because all the users are gone.
Now every file-system is supposed to self-manage own superblock and
its dirty state.
The nice thing about killing this thread is that it improves power management.
Indeed, 'sync_supers' is a source of monotonic system wake-ups - it woke up
every 5 seconds no matter what - even if there were no dirty superblocks and
even if there were no file-systems using this service (e.g., btrfs and
journalled ext4 do not need it). So it was wasting power most of the time. And
because the thread was in the core of the kernel, all systems had to have it.
So I am quite happy to make it go away.
Interestingly, this thread is a left-over from the pdflush kernel thread which
was a self-forking kernel thread responsible for all the write-back in old
Linux kernels. It was turned into per-block device BDI threads, and
'sync_supers' was a left-over. Thus, R.I.P, pdflush as well.
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'mm/page-writeback.c')
-rw-r--r-- | mm/page-writeback.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index e5363f34e025..5ad5ce23c1e0 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -1532,7 +1532,6 @@ int dirty_writeback_centisecs_handler(ctl_table *table, int write, void __user *buffer, size_t *length, loff_t *ppos) { proc_dointvec(table, write, buffer, length, ppos); - bdi_arm_supers_timer(); return 0; } |