Artem Bityutskiy
bbf2b37a98
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 <[email protected] >
2011-05-16 15:48:48 +03:00
..
budget.c
UBIFS: introduce a separate structure for budgeting info
2011-05-13 19:23:53 +03:00
commit.c
UBIFS: introduce a separate structure for budgeting info
2011-05-13 19:23:53 +03:00
compress.c
UBIFS: fix sparse warnings
2008-12-31 14:13:24 +02:00
debug.c
UBIFS: add a superblock flag for free space fix-up
2011-05-16 14:12:14 +03:00
debug.h
UBIFS: dump the stack on errors in failure mode too
2011-05-13 19:23:56 +03:00
dir.c
UBIFS: introduce a separate structure for budgeting info
2011-05-13 19:23:53 +03:00
file.c
UBIFS: remove strange commentary
2011-05-13 19:23:55 +03:00
find.c
UBIFS: introduce a separate structure for budgeting info
2011-05-13 19:23:53 +03:00
gc.c
UBIFS: synchronize write-buffer before switching to the next bud
2011-05-16 10:31:41 +03:00
io.c
UBIFS: synchronize write-buffer before switching to the next bud
2011-05-16 10:31:41 +03:00
ioctl.c
userns: rename is_owner_or_cap to inode_owner_or_capable
2011-03-23 19:47:13 -07:00
journal.c
UBIFS: synchronize write-buffer before switching to the next bud
2011-05-16 10:31:41 +03:00
Kconfig
UBIFS: do not select KALLSYMS_ALL
2011-04-05 10:45:45 +03:00
key.h
UBIFS: mark unused key objects as invalid
2010-08-30 10:19:08 +03:00
log.c
UBIFS: share the next_log_lnum helper
2011-05-16 14:12:12 +03:00
lprops.c
UBIFS: dump more in the lprops debugging check
2011-05-16 10:31:39 +03:00
lpt.c
UBIFS: fix oops on error path in read_pnode
2011-04-05 10:40:31 +03:00
lpt_commit.c
UBIFS: introduce lsave debugging
2011-05-13 19:23:54 +03:00
Makefile
master.c
UBIFS: introduce a separate structure for budgeting info
2011-05-13 19:23:53 +03:00
misc.h
UBIFS: share the next_log_lnum helper
2011-05-16 14:12:12 +03:00
orphan.c
UBIFS: fix minor stylistic issues
2011-05-13 19:23:53 +03:00
recovery.c
UBIFS: fix extremely rare mount failure
2011-05-16 15:48:48 +03:00
replay.c
UBIFS: expect corruption only in last journal head LEBs
2011-05-16 14:11:25 +03:00
sb.c
UBIFS: add the fixup function
2011-05-16 14:12:15 +03:00
scan.c
UBIFS: remove double semicolon
2011-02-06 15:08:02 +02:00
shrinker.c
UBIFS: introduce new flags for RO mounts
2010-09-19 21:07:58 +03:00
super.c
UBIFS: fix-up free space on mount if flag is set
2011-05-16 14:12:15 +03:00
tnc.c
UBIFS: fix minor stylistic issues
2011-05-13 19:23:53 +03:00
tnc_commit.c
UBIFS: make force in-the-gaps to be a general self-check
2011-05-13 19:23:54 +03:00
tnc_misc.c
ubifs-media.h
UBIFS: add a superblock flag for free space fix-up
2011-05-16 14:12:14 +03:00
ubifs.h
UBIFS: add the fixup function
2011-05-16 14:12:15 +03:00
xattr.c
UBIFS: make xattr operations names consistent
2011-05-13 19:23:54 +03:00