diff options
author | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2009-08-25 09:22:53 -0400 |
---|---|---|
committer | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2009-09-10 05:06:47 -0400 |
commit | 0dcd18e4073454daf591e7127247e32ec942b4f3 (patch) | |
tree | 2f9e0175bc1af2e841269c19f0a5f65cc22088d7 /fs/ubifs/orphan.c | |
parent | 348709bad348d2fd013e1529b4cf5f220717c328 (diff) |
UBIFS: check ubifs_scan error codes better
The 'ubifs_scan()' function returns -EUCLEAN if something is corrupted
and recovery is needed, otherwise it returns other error codes. However,
in few places UBIFS does not check the error codes and runs recovery.
This patch changes this behavior and makes UBIFS start recovery only
on -EUCLEAN errors.
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Reviewed-by: Adrian Hunter <Adrian.Hunter@nokia.com>
Diffstat (limited to 'fs/ubifs/orphan.c')
-rw-r--r-- | fs/ubifs/orphan.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/ubifs/orphan.c b/fs/ubifs/orphan.c index 3119af3cdc51..82009c74b6a3 100644 --- a/fs/ubifs/orphan.c +++ b/fs/ubifs/orphan.c | |||
@@ -672,7 +672,8 @@ static int kill_orphans(struct ubifs_info *c) | |||
672 | dbg_rcvry("LEB %d", lnum); | 672 | dbg_rcvry("LEB %d", lnum); |
673 | sleb = ubifs_scan(c, lnum, 0, c->sbuf, 1); | 673 | sleb = ubifs_scan(c, lnum, 0, c->sbuf, 1); |
674 | if (IS_ERR(sleb)) { | 674 | if (IS_ERR(sleb)) { |
675 | sleb = ubifs_recover_leb(c, lnum, 0, c->sbuf, 0); | 675 | if (PTR_ERR(sleb) == -EUCLEAN) |
676 | sleb = ubifs_recover_leb(c, lnum, 0, c->sbuf, 0); | ||
676 | if (IS_ERR(sleb)) { | 677 | if (IS_ERR(sleb)) { |
677 | err = PTR_ERR(sleb); | 678 | err = PTR_ERR(sleb); |
678 | break; | 679 | break; |