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

Commit f2933e86 authored by Joern Engel's avatar Joern Engel Committed by Prasad Joshi
Browse files

Logfs: Allow NULL block_isbad() methods



Not all mtd drivers define block_isbad().  Let's assume no bad blocks
instead of refusing to mount.

Signed-off-by: default avatarJoern Engel <joern@logfs.org>
parent bbe01387
Loading
Loading
Loading
Loading
+12 −14
Original line number Diff line number Diff line
@@ -150,15 +150,14 @@ static struct page *mtd_find_first_sb(struct super_block *sb, u64 *ofs)
	filler_t *filler = mtd_readpage;
	struct mtd_info *mtd = super->s_mtd;

	if (!mtd->block_isbad)
		return NULL;

	*ofs = 0;
	if (mtd->block_isbad) {
		while (mtd->block_isbad(mtd, *ofs)) {
			*ofs += mtd->erasesize;
			if (*ofs >= mtd->size)
				return NULL;
		}
	}
	BUG_ON(*ofs & ~PAGE_MASK);
	return read_cache_page(mapping, *ofs >> PAGE_SHIFT, filler, sb);
}
@@ -170,15 +169,14 @@ static struct page *mtd_find_last_sb(struct super_block *sb, u64 *ofs)
	filler_t *filler = mtd_readpage;
	struct mtd_info *mtd = super->s_mtd;

	if (!mtd->block_isbad)
		return NULL;

	*ofs = mtd->size - mtd->erasesize;
	if (mtd->block_isbad) {
		while (mtd->block_isbad(mtd, *ofs)) {
			*ofs -= mtd->erasesize;
			if (*ofs <= 0)
				return NULL;
		}
	}
	*ofs = *ofs + mtd->erasesize - 0x1000;
	BUG_ON(*ofs & ~PAGE_MASK);
	return read_cache_page(mapping, *ofs >> PAGE_SHIFT, filler, sb);