From c9aafa9156af7da110d13c9ae8c1bf2dab7f6777 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Wed, 19 May 2010 17:00:10 +0100 Subject: [PATCH] --- yaml --- r: 195983 b: refs/heads/master c: acb64a43e4503fbea9faf123f2403da7af8831eb h: refs/heads/master i: 195981: 0bbd5c35d23ef039c60ed401b40a20d134ea9160 195979: 1217ff69a687207199584f253403dce986c6d0c3 195975: 020eac82862bed0c5d5427a920223c8225c9fa9d 195967: ca19922b21223384555555f1a1c5c787ef44a593 v: v3 --- [refs] | 2 +- trunk/fs/jffs2/background.c | 3 +-- trunk/fs/jffs2/nodemgmt.c | 2 ++ trunk/fs/jffs2/super.c | 2 ++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index e0feab1e1abd..a439fbf9a643 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d6ce171069635f05737935adc813b4d48d71a583 +refs/heads/master: acb64a43e4503fbea9faf123f2403da7af8831eb diff --git a/trunk/fs/jffs2/background.c b/trunk/fs/jffs2/background.c index 3ff50da94789..55f1dde2fa8b 100644 --- a/trunk/fs/jffs2/background.c +++ b/trunk/fs/jffs2/background.c @@ -23,10 +23,9 @@ static int jffs2_garbage_collect_thread(void *); void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c) { - spin_lock(&c->erase_completion_lock); + assert_spin_locked(&c->erase_completion_lock); if (c->gc_task && jffs2_thread_should_wake(c)) send_sig(SIGHUP, c->gc_task, 1); - spin_unlock(&c->erase_completion_lock); } /* This must only ever be called when no GC thread is currently running */ diff --git a/trunk/fs/jffs2/nodemgmt.c b/trunk/fs/jffs2/nodemgmt.c index 5ab5c8521cdf..dd2d920d3325 100644 --- a/trunk/fs/jffs2/nodemgmt.c +++ b/trunk/fs/jffs2/nodemgmt.c @@ -481,7 +481,9 @@ struct jffs2_raw_node_ref *jffs2_add_physical_node_ref(struct jffs2_sb_info *c, void jffs2_complete_reservation(struct jffs2_sb_info *c) { D1(printk(KERN_DEBUG "jffs2_complete_reservation()\n")); + spin_lock(&c->erase_completion_lock); jffs2_garbage_collect_trigger(c); + spin_unlock(&c->erase_completion_lock); mutex_unlock(&c->alloc_sem); } diff --git a/trunk/fs/jffs2/super.c b/trunk/fs/jffs2/super.c index 9a80e8e595d0..12cc967c5c03 100644 --- a/trunk/fs/jffs2/super.c +++ b/trunk/fs/jffs2/super.c @@ -63,7 +63,9 @@ 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); }