Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ca5175b authored by Artem Bityutskiy's avatar Artem Bityutskiy
Browse files

UBIFS: improve debugging lprops scanning a little



When doing the lprops extra check ('dbg_check_lprops()') we scan whole media.
We even scan empty and freeable LEBs which may contain garbage, which we handle
after scanning. This patch teach the lprops checking function
('scan_check_cb()') to avoid scanning for free and freeable LEBs and save time.

Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
parent eaeee242
Loading
Loading
Loading
Loading
+18 −24
Original line number Diff line number Diff line
@@ -1100,32 +1100,26 @@ static int scan_check_cb(struct ubifs_info *c,
		goto out;
	}

	sleb = ubifs_scan(c, lnum, 0, buf, 0);
	if (IS_ERR(sleb)) {
	/*
	 * After an unclean unmount, empty and freeable LEBs
		 * may contain garbage.
	 * may contain garbage - do not scan them.
	 */
	if (lp->free == c->leb_size) {
			ubifs_err("scan errors were in empty LEB "
				  "- continuing checking");
		lst->empty_lebs += 1;
		lst->total_free += c->leb_size;
		lst->total_dark += ubifs_calc_dark(c, c->leb_size);
			ret = LPT_SCAN_CONTINUE;
			goto exit;
		return LPT_SCAN_CONTINUE;
	}

	if (lp->free + lp->dirty == c->leb_size &&
	    !(lp->flags & LPROPS_INDEX)) {
			ubifs_err("scan errors were in freeable LEB "
				  "- continuing checking");
		lst->total_free  += lp->free;
		lst->total_dirty += lp->dirty;
		lst->total_dark  +=  ubifs_calc_dark(c, c->leb_size);
			ret = LPT_SCAN_CONTINUE;
			goto exit;
		return LPT_SCAN_CONTINUE;
	}

	sleb = ubifs_scan(c, lnum, 0, buf, 0);
	if (IS_ERR(sleb)) {
		data->err = PTR_ERR(sleb);
		ret = LPT_SCAN_STOP;
		goto exit;