diff options
author | Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2012-05-07 12:02:46 -0400 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2012-05-14 00:24:23 -0400 |
commit | 208b14e507c00ff7f108e1a388dd3d8cc805a443 (patch) | |
tree | 34ec5a82825cf87d2d9a2856bde10f722a22cd14 /fs/jffs2/super.c | |
parent | e832579fd100eb4f9658bdfefd61caf86a6cbff1 (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.c | 13 |
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 | ||
66 | static 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 | |||
78 | static const char *jffs2_compr_name(unsigned int compr) | 66 | static 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, |