mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +00:00
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: Joern Engel <joern@logfs.org>
This commit is contained in:
parent
bbe0138712
commit
f2933e86ad
@ -150,14 +150,13 @@ 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;
|
||||
while (mtd->block_isbad(mtd, *ofs)) {
|
||||
*ofs += mtd->erasesize;
|
||||
if (*ofs >= mtd->size)
|
||||
return NULL;
|
||||
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,14 +169,13 @@ 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;
|
||||
while (mtd->block_isbad(mtd, *ofs)) {
|
||||
*ofs -= mtd->erasesize;
|
||||
if (*ofs <= 0)
|
||||
return NULL;
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user