[JFFS2] Improve failure mode if inode checking leaves unchecked space.
authorDavid Woodhouse <dwmw2@infradead.org>
Mon, 23 Apr 2007 11:11:46 +0000 (12:11 +0100)
committerDavid Woodhouse <dwmw2@infradead.org>
Mon, 23 Apr 2007 11:11:46 +0000 (12:11 +0100)
We should never find the unchecked size is non-zero after we've finished
checking all inodes. If it happens, used to BUG(), leaving the alloc_sem
held and deadlocking. Instead, just return -ENOSPC after complaining. The
GC thread will die, but read-only operation should be able to continue and
the file system should be unmountable.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
fs/jffs2/gc.c

index 3a3cf22..e92cf0f 100644 (file)
@@ -144,7 +144,8 @@ int jffs2_garbage_collect_pass(struct jffs2_sb_info *c)
                               c->unchecked_size);
                        jffs2_dbg_dump_block_lists_nolock(c);
                        spin_unlock(&c->erase_completion_lock);
-                       BUG();
+                       up(&c->alloc_sem);
+                       return -ENOSPC;
                }
 
                spin_unlock(&c->erase_completion_lock);