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)
commitbbf2b37a98d22d5b111f03674dd4f093dd6c0ae5
tree0d95805a339bdb7cd85b2af6bf8546e1ab02c39f
parent43e07073865ae540e3b463f437f0f837f17714ba
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