Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mtd: do not use mtd->block_markbad directly

Instead, use the new 'mtd_can_have_bb()', or just rely on 'mtd_block_markbad()'
return code, which will be -EOPNOTSUPP if bad blocks are not supported.

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>

authored by

Artem Bityutskiy and committed by
David Woodhouse
800ffd34 d58b27ed

+6 -10
+1 -4
drivers/mtd/mtdchar.c
··· 877 877 878 878 if (copy_from_user(&offs, argp, sizeof(loff_t))) 879 879 return -EFAULT; 880 - if (!mtd->block_markbad) 881 - ret = -EOPNOTSUPP; 882 - else 883 - return mtd_block_markbad(mtd, offs); 880 + return mtd_block_markbad(mtd, offs); 884 881 break; 885 882 } 886 883
+1 -1
drivers/mtd/mtdconcat.c
··· 673 673 struct mtd_concat *concat = CONCAT(mtd); 674 674 int i, err = -EINVAL; 675 675 676 - if (!concat->subdev[0]->block_markbad) 676 + if (!mtd_can_have_bb(concat->subdev[0])) 677 677 return 0; 678 678 679 679 if (ofs > mtd->size)
+1 -1
drivers/mtd/mtdoops.c
··· 199 199 return; 200 200 } 201 201 202 - if (mtd->block_markbad && ret == -EIO) { 202 + if (mtd_can_have_bb(mtd) && ret == -EIO) { 203 203 ret = mtd_block_markbad(mtd, cxt->nextpage * record_size); 204 204 if (ret < 0) { 205 205 printk(KERN_ERR "mtdoops: block_markbad failed, aborting\n");
+1 -1
drivers/mtd/mtdswap.c
··· 274 274 eb->root = NULL; 275 275 276 276 /* badblocks not supported */ 277 - if (!d->mtd->block_markbad) 277 + if (!mtd_can_have_bb(d->mtd)) 278 278 return 1; 279 279 280 280 offset = mtdswap_eb_offset(d, eb);
-3
fs/jffs2/wbuf.c
··· 1130 1130 if( ++jeb->bad_count < MAX_ERASE_FAILURES) 1131 1131 return 0; 1132 1132 1133 - if (!c->mtd->block_markbad) 1134 - return 1; // What else can we do? 1135 - 1136 1133 printk(KERN_WARNING "JFFS2: marking eraseblock at %08x\n as bad", bad_offset); 1137 1134 ret = mtd_block_markbad(c->mtd, bad_offset); 1138 1135
+2
include/linux/mtd/mtd.h
··· 447 447 448 448 static inline int mtd_block_markbad(struct mtd_info *mtd, loff_t ofs) 449 449 { 450 + if (!mtd->block_markbad) 451 + return -EOPNOTSUPP; 450 452 return mtd->block_markbad(mtd, ofs); 451 453 } 452 454