Re: jffs2 BUG() on mount

Ladislav Michl
2006-04-10T09:09:07Z

On Tue, Apr 04, 2006 at 11:34:30AM +0400, Artem B. Bityutskiy wrote:
> Actually, there is a jffs2_build_filesystem() function which walks all
> inodes with nlink == 0 and pretends to dispense with them. I believe
> that function is the right place to fix. I ganced at it, and it appeared
> to be thet it calls jffs2_mark_node_obsolete() for all nodes of this
> inode. jffs2_mark_node_obsolete() is a huge and fearsom monster-function
> which may do something wrong.

Problem appeared to be GC thread waiting for inode being read. On next run
this inode was incorrectly skipped before jffs2_do_read_inode_internal
marked it obsolete. Bug was fixed by decrementing c->checked_ino before
jffs2_garbage_collect_pass returns (for INO_STATE_READING) so on next GC
run it is checked again.

Many thanks to David Woodhouse and Artem B. Bityuckiy for help with
debugging.

Best regards,
ladis