提交 431102fe 编写于 作者: A Artem Bityutskiy

UBIFS: clean up free space checking

recovery.c has 'is_empty()' helper and it is better to use
this helper instead of re-implementing it in several places.
This patch does this and removes some amount of unneeded code.
Signed-off-by: NArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Reviewed-by: NAdrian Hunter <Adrian.Hunter@nokia.com>
上级 ed43f2f0
...@@ -357,11 +357,7 @@ static int is_last_write(const struct ubifs_info *c, void *buf, int offs) ...@@ -357,11 +357,7 @@ static int is_last_write(const struct ubifs_info *c, void *buf, int offs)
empty_offs = ALIGN(offs + 1, c->min_io_size); empty_offs = ALIGN(offs + 1, c->min_io_size);
check_len = c->leb_size - empty_offs; check_len = c->leb_size - empty_offs;
p = buf + empty_offs - offs; p = buf + empty_offs - offs;
return is_empty(p, check_len);
for (; check_len > 0; check_len--)
if (*p++ != 0xff)
return 0;
return 1;
} }
/** /**
...@@ -814,7 +810,7 @@ struct ubifs_scan_leb *ubifs_recover_log_leb(struct ubifs_info *c, int lnum, ...@@ -814,7 +810,7 @@ struct ubifs_scan_leb *ubifs_recover_log_leb(struct ubifs_info *c, int lnum,
static int recover_head(const struct ubifs_info *c, int lnum, int offs, static int recover_head(const struct ubifs_info *c, int lnum, int offs,
void *sbuf) void *sbuf)
{ {
int len, err, need_clean = 0; int len, err;
if (c->min_io_size > 1) if (c->min_io_size > 1)
len = c->min_io_size; len = c->min_io_size;
...@@ -828,19 +824,7 @@ static int recover_head(const struct ubifs_info *c, int lnum, int offs, ...@@ -828,19 +824,7 @@ static int recover_head(const struct ubifs_info *c, int lnum, int offs,
/* Read at the head location and check it is empty flash */ /* Read at the head location and check it is empty flash */
err = ubi_read(c->ubi, lnum, sbuf, offs, len); err = ubi_read(c->ubi, lnum, sbuf, offs, len);
if (err) if (err || !is_empty(sbuf, len)) {
need_clean = 1;
else {
uint8_t *p = sbuf;
while (len--)
if (*p++ != 0xff) {
need_clean = 1;
break;
}
}
if (need_clean) {
dbg_rcvry("cleaning head at %d:%d", lnum, offs); dbg_rcvry("cleaning head at %d:%d", lnum, offs);
if (offs == 0) if (offs == 0)
return ubifs_leb_unmap(c, lnum); return ubifs_leb_unmap(c, lnum);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册