UBIFS: simplify LEB recovery function further
Further simplify 'ubifs_recover_leb()' by noticing that we have to call 'clean_buf()' in any case, and it is fine to call it if the offset is aligned to 'c->min_io_size'. Thus, we do not have to call it separately from every "if" - just call it once at the end. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
This commit is contained in:
parent
7c47bfd0db
commit
43e0707386
@ -662,19 +662,13 @@ struct ubifs_scan_leb *ubifs_recover_leb(struct ubifs_info *c, int lnum,
|
||||
}
|
||||
|
||||
if (ret == SCANNED_GARBAGE || ret == SCANNED_A_BAD_PAD_NODE) {
|
||||
if (is_last_write(c, buf, offs))
|
||||
clean_buf(c, &buf, lnum, &offs, &len);
|
||||
else
|
||||
if (!is_last_write(c, buf, offs))
|
||||
goto corrupted_rescan;
|
||||
} else if (ret == SCANNED_A_CORRUPT_NODE) {
|
||||
if (no_more_nodes(c, buf, len, lnum, offs))
|
||||
clean_buf(c, &buf, lnum, &offs, &len);
|
||||
else
|
||||
if (!no_more_nodes(c, buf, len, lnum, offs))
|
||||
goto corrupted_rescan;
|
||||
} else if (!is_empty(buf, len)) {
|
||||
if (is_last_write(c, buf, offs)) {
|
||||
clean_buf(c, &buf, lnum, &offs, &len);
|
||||
} else {
|
||||
if (!is_last_write(c, buf, offs)) {
|
||||
int corruption = first_non_ff(buf, len);
|
||||
|
||||
/*
|
||||
@ -694,12 +688,9 @@ struct ubifs_scan_leb *ubifs_recover_leb(struct ubifs_info *c, int lnum,
|
||||
if (grouped && drop_incomplete_group(sleb, &offs)) {
|
||||
buf = sbuf + offs;
|
||||
len = c->leb_size - offs;
|
||||
clean_buf(c, &buf, lnum, &offs, &len);
|
||||
}
|
||||
|
||||
if (offs % c->min_io_size)
|
||||
clean_buf(c, &buf, lnum, &offs, &len);
|
||||
|
||||
clean_buf(c, &buf, lnum, &offs, &len);
|
||||
ubifs_end_scan(c, sleb, lnum, offs);
|
||||
|
||||
err = fix_unclean_leb(c, sleb, start);
|
||||
|
Loading…
Reference in New Issue
Block a user