aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2007-04-23 07:11:46 -0400
committerDavid Woodhouse <dwmw2@infradead.org>2007-04-23 07:11:46 -0400
commit44b998e1eb254edc87177819ee693690fac68b7f (patch)
tree2f7d5511d8f0efc9e824a042d5ff50793a74de31 /fs
parent566865a2a4791c9290155f651ee0c2c606db0b1d (diff)
[JFFS2] Improve failure mode if inode checking leaves unchecked space.
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>
Diffstat (limited to 'fs')
-rw-r--r--fs/jffs2/gc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/jffs2/gc.c b/fs/jffs2/gc.c
index 3a3cf225981f..e92cf0f02529 100644
--- a/fs/jffs2/gc.c
+++ b/fs/jffs2/gc.c
@@ -144,7 +144,8 @@ int jffs2_garbage_collect_pass(struct jffs2_sb_info *c)
144 c->unchecked_size); 144 c->unchecked_size);
145 jffs2_dbg_dump_block_lists_nolock(c); 145 jffs2_dbg_dump_block_lists_nolock(c);
146 spin_unlock(&c->erase_completion_lock); 146 spin_unlock(&c->erase_completion_lock);
147 BUG(); 147 up(&c->alloc_sem);
148 return -ENOSPC;
148 } 149 }
149 150
150 spin_unlock(&c->erase_completion_lock); 151 spin_unlock(&c->erase_completion_lock);