]> git.baikalelectronics.ru Git - kernel.git/commit
UBIFS: fix extremely rare mount failure
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Mon, 16 May 2011 12:15:52 +0000 (15:15 +0300)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Mon, 16 May 2011 12:48:48 +0000 (15:48 +0300)
commit669ad21f3a3fda78ea0d767539e31044e91be240
tree0d95805a339bdb7cd85b2af6bf8546e1ab02c39f
parent69318e02fdb26f369ec28da2f411b40f94f59f5e
UBIFS: fix extremely rare mount failure

This patch fixes an extremely rare mount failure after a power cut, when mount
fails with ENOSPC error because UBIFS could not find the GC LEB.

In short, the reason for this failure is that after recovery the GC head LEB
contains less free space than it had contained just before the power cut
happened. As a result, if the FS is full, 'ubifs_rcvry_gc_commit()' is unable
to find a dirty LEB to GC and a free LEB, so mount fails.

This patch contains a huge comment with more detailed explanation, please refer
that comment.

Since this is really really rare and unlikely situation, I do not send this
patch to the stable tree, also because it requires a lot of preparation
patches which I did before. So sending this to -stable would be too risky.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
fs/ubifs/recovery.c