aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2009-06-29 18:58:34 +0300
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2009-07-09 09:19:38 +0300
commit431102fed3effe4e4e19678830ddab7f05c34bf9 (patch)
treecc3a9046a6abbbc026320449ee59b07bb70f6109
parented43f2f06cc1cec7ec2dc235c908530bc8c796eb (diff)
downloadkernel_samsung_tuna-431102fed3effe4e4e19678830ddab7f05c34bf9.zip
kernel_samsung_tuna-431102fed3effe4e4e19678830ddab7f05c34bf9.tar.gz
kernel_samsung_tuna-431102fed3effe4e4e19678830ddab7f05c34bf9.tar.bz2
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: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Reviewed-by: Adrian Hunter <Adrian.Hunter@nokia.com>
-rw-r--r--fs/ubifs/recovery.c22
1 files changed, 3 insertions, 19 deletions
diff --git a/fs/ubifs/recovery.c b/fs/ubifs/recovery.c
index 093a1ec..fe7af9f 100644
--- a/fs/ubifs/recovery.c
+++ b/fs/ubifs/recovery.c
@@ -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);
check_len = c->leb_size - empty_offs;
p = buf + empty_offs - offs;
-
- for (; check_len > 0; check_len--)
- if (*p++ != 0xff)
- return 0;
- return 1;
+ return is_empty(p, check_len);
}
/**
@@ -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,
void *sbuf)
{
- int len, err, need_clean = 0;
+ int len, err;
if (c->min_io_size > 1)
len = c->min_io_size;
@@ -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 */
err = ubi_read(c->ubi, lnum, sbuf, offs, len);
- if (err)
- need_clean = 1;
- else {
- uint8_t *p = sbuf;
-
- while (len--)
- if (*p++ != 0xff) {
- need_clean = 1;
- break;
- }
- }
-
- if (need_clean) {
+ if (err || !is_empty(sbuf, len)) {
dbg_rcvry("cleaning head at %d:%d", lnum, offs);
if (offs == 0)
return ubifs_leb_unmap(c, lnum);