jffs2: Stop triggering block erases from jffs2_write_super()
authorJoakim Tjernlund <joakim.tjernlund@transmode.se>
Wed, 19 May 2010 16:16:11 +0000 (17:16 +0100)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Wed, 19 May 2010 16:16:11 +0000 (17:16 +0100)
This is the culmination of this sequence of patches. By moving the block
erasing from jffs2_write_super() into the GC code, we avoid huge
latencies on unmount where it waits for _all_ pending blocks to be
erased, and we allow better control for time-critical tasks by stopping
the GC thread.

Signed-off-by: Joakim Tjernlund <joakim.tjernlund@transmode.se>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
fs/jffs2/super.c

index 12cc967..511e2d6 100644 (file)
@@ -63,10 +63,6 @@ static void jffs2_write_super(struct super_block *sb)
 
        if (!(sb->s_flags & MS_RDONLY)) {
                D1(printk(KERN_DEBUG "jffs2_write_super()\n"));
-               spin_lock(&c->erase_completion_lock);
-               jffs2_garbage_collect_trigger(c);
-               spin_unlock(&c->erase_completion_lock);
-               jffs2_erase_pending_blocks(c, 0);
                jffs2_flush_wbuf_gc(c, 0);
        }