浏览代码

[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>
David Woodhouse 18 年之前
父节点
当前提交
44b998e1eb
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      fs/jffs2/gc.c

+ 2 - 1
fs/jffs2/gc.c

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