aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ubifs/recovery.c
diff options
context:
space:
mode:
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2009-06-29 11:58:34 -0400
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>2009-07-09 02:19:38 -0400
commit431102fed3effe4e4e19678830ddab7f05c34bf9 (patch)
treecc3a9046a6abbbc026320449ee59b07bb70f6109 /fs/ubifs/recovery.c
parented43f2f06cc1cec7ec2dc235c908530bc8c796eb (diff)
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>
Diffstat (limited to 'fs/ubifs/recovery.c')
-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 093a1ecb700f..fe7af9f676b0 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)
357 empty_offs = ALIGN(offs + 1, c->min_io_size); 357 empty_offs = ALIGN(offs + 1, c->min_io_size);
358 check_len = c->leb_size - empty_offs; 358 check_len = c->leb_size - empty_offs;
359 p = buf + empty_offs - offs; 359 p = buf + empty_offs - offs;
360 360 return is_empty(p, check_len);
361 for (; check_len > 0; check_len--)
362 if (*p++ != 0xff)
363 return 0;
364 return 1;
365} 361}
366 362
367/** 363/**
@@ -814,7 +810,7 @@ struct ubifs_scan_leb *ubifs_recover_log_leb(struct ubifs_info *c, int lnum,
814static int recover_head(const struct ubifs_info *c, int lnum, int offs, 810static int recover_head(const struct ubifs_info *c, int lnum, int offs,
815 void *sbuf) 811 void *sbuf)
816{ 812{
817 int len, err, need_clean = 0; 813 int len, err;
818 814
819 if (c->min_io_size > 1) 815 if (c->min_io_size > 1)
820 len = c->min_io_size; 816 len = c->min_io_size;
@@ -828,19 +824,7 @@ static int recover_head(const struct ubifs_info *c, int lnum, int offs,
828 824
829 /* Read at the head location and check it is empty flash */ 825 /* Read at the head location and check it is empty flash */
830 err = ubi_read(c->ubi, lnum, sbuf, offs, len); 826 err = ubi_read(c->ubi, lnum, sbuf, offs, len);
831 if (err) 827 if (err || !is_empty(sbuf, len)) {
832 need_clean = 1;
833 else {
834 uint8_t *p = sbuf;
835
836 while (len--)
837 if (*p++ != 0xff) {
838 need_clean = 1;
839 break;
840 }
841 }
842
843 if (need_clean) {
844 dbg_rcvry("cleaning head at %d:%d", lnum, offs); 828 dbg_rcvry("cleaning head at %d:%d", lnum, offs);
845 if (offs == 0) 829 if (offs == 0)
846 return ubifs_leb_unmap(c, lnum); 830 return ubifs_leb_unmap(c, lnum);