aboutsummaryrefslogtreecommitdiffstats
path: root/fs/jffs2/super.c
diff options
context:
space:
mode:
authorArtem Bityutskiy <artem.bityutskiy@linux.intel.com>2012-05-07 12:02:46 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2012-05-14 00:24:23 -0400
commit208b14e507c00ff7f108e1a388dd3d8cc805a443 (patch)
tree34ec5a82825cf87d2d9a2856bde10f722a22cd14 /fs/jffs2/super.c
parente832579fd100eb4f9658bdfefd61caf86a6cbff1 (diff)
jffs2: get rid of jffs2_sync_super
Currently JFFS2 file-system maps the VFS "superblock" abstraction to the write-buffer. Namely, it uses VFS services to synchronize the write-buffer periodically. The whole "superblock write-out" VFS infrastructure is served by the 'sync_supers()' kernel thread, which wakes up every 5 (by default) seconds and writes out all dirty superblock using the '->write_super()' call-back. But the problem with this thread is that it wastes power by waking up the system every 5 seconds no matter what. So we want to kill it completely and thus, we need to make file-systems to stop using the '->write_super' VFS service, and then remove it together with the kernel thread. This patch switches the JFFS2 write-buffer management from '->write_super()'/'->s_dirt' to a delayed work. Instead of setting the 's_dirt' flag we just schedule a delayed work for synchronizing the write-buffer. Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'fs/jffs2/super.c')
-rw-r--r--fs/jffs2/super.c13
1 files changed, 0 insertions, 13 deletions
diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c
index b36aa950d2a6..61ea41389f90 100644
--- a/fs/jffs2/super.c
+++ b/fs/jffs2/super.c
@@ -63,18 +63,6 @@ static void jffs2_i_init_once(void *foo)
63 inode_init_once(&f->vfs_inode); 63 inode_init_once(&f->vfs_inode);
64} 64}
65 65
66static void jffs2_write_super(struct super_block *sb)
67{
68 struct jffs2_sb_info *c = JFFS2_SB_INFO(sb);
69
70 sb->s_dirt = 0;
71
72 if (!(sb->s_flags & MS_RDONLY)) {
73 jffs2_dbg(1, "%s()\n", __func__);
74 jffs2_flush_wbuf_gc(c, 0);
75 }
76}
77
78static const char *jffs2_compr_name(unsigned int compr) 66static const char *jffs2_compr_name(unsigned int compr)
79{ 67{
80 switch (compr) { 68 switch (compr) {
@@ -263,7 +251,6 @@ static const struct super_operations jffs2_super_operations =
263 .alloc_inode = jffs2_alloc_inode, 251 .alloc_inode = jffs2_alloc_inode,
264 .destroy_inode =jffs2_destroy_inode, 252 .destroy_inode =jffs2_destroy_inode,
265 .put_super = jffs2_put_super, 253 .put_super = jffs2_put_super,
266 .write_super = jffs2_write_super,
267 .statfs = jffs2_statfs, 254 .statfs = jffs2_statfs,
268 .remount_fs = jffs2_remount_fs, 255 .remount_fs = jffs2_remount_fs,
269 .evict_inode = jffs2_evict_inode, 256 .evict_inode = jffs2_evict_inode,