diff options
| author | Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2011-12-23 12:35:30 -0500 |
|---|---|---|
| committer | David Woodhouse <David.Woodhouse@intel.com> | 2012-01-09 13:25:47 -0500 |
| commit | 7086c19d07429d697057587caf1e5e0345442d16 (patch) | |
| tree | 3a892182dba0847de32ef79b1fe1d46d8b1b5de8 | |
| parent | ead995f8d4da1e2f1ef40b0e5f4133fee38a3d3d (diff) | |
mtd: introduce mtd_block_isbad interface
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
| -rw-r--r-- | arch/cris/arch-v32/drivers/axisflashmap.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/inftlmount.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/mtdchar.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/mtdconcat.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/mtdoops.c | 4 | ||||
| -rw-r--r-- | drivers/mtd/mtdpart.c | 5 | ||||
| -rw-r--r-- | drivers/mtd/mtdswap.c | 4 | ||||
| -rw-r--r-- | drivers/mtd/nftlmount.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/redboot.c | 4 | ||||
| -rw-r--r-- | drivers/mtd/ssfdc.c | 4 | ||||
| -rw-r--r-- | drivers/mtd/tests/mtd_oobtest.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/tests/mtd_pagetest.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/tests/mtd_readtest.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/tests/mtd_speedtest.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/tests/mtd_stresstest.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/tests/mtd_subpagetest.c | 2 | ||||
| -rw-r--r-- | drivers/mtd/tests/mtd_torturetest.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/ubi/io.c | 2 | ||||
| -rw-r--r-- | fs/jffs2/scan.c | 2 | ||||
| -rw-r--r-- | fs/logfs/dev_mtd.c | 4 | ||||
| -rw-r--r-- | include/linux/mtd/mtd.h | 7 |
21 files changed, 34 insertions, 30 deletions
diff --git a/arch/cris/arch-v32/drivers/axisflashmap.c b/arch/cris/arch-v32/drivers/axisflashmap.c index 011bddbf073..b34438e026b 100644 --- a/arch/cris/arch-v32/drivers/axisflashmap.c +++ b/arch/cris/arch-v32/drivers/axisflashmap.c | |||
| @@ -404,8 +404,7 @@ static int __init init_axis_flash(void) | |||
| 404 | */ | 404 | */ |
| 405 | int blockstat; | 405 | int blockstat; |
| 406 | do { | 406 | do { |
| 407 | blockstat = main_mtd->block_isbad(main_mtd, | 407 | blockstat = mtd_block_isbad(main_mtd, ptable_sector); |
| 408 | ptable_sector); | ||
| 409 | if (blockstat < 0) | 408 | if (blockstat < 0) |
| 410 | ptable_sector = 0; /* read error */ | 409 | ptable_sector = 0; /* read error */ |
| 411 | else if (blockstat) | 410 | else if (blockstat) |
diff --git a/drivers/mtd/inftlmount.c b/drivers/mtd/inftlmount.c index 9bfbca5d88d..38519401196 100644 --- a/drivers/mtd/inftlmount.c +++ b/drivers/mtd/inftlmount.c | |||
| @@ -306,7 +306,8 @@ static int find_boot_record(struct INFTLrecord *inftl) | |||
| 306 | /* If any of the physical eraseblocks are bad, don't | 306 | /* If any of the physical eraseblocks are bad, don't |
| 307 | use the unit. */ | 307 | use the unit. */ |
| 308 | for (physblock = 0; physblock < inftl->EraseSize; physblock += inftl->mbd.mtd->erasesize) { | 308 | for (physblock = 0; physblock < inftl->EraseSize; physblock += inftl->mbd.mtd->erasesize) { |
| 309 | if (inftl->mbd.mtd->block_isbad(inftl->mbd.mtd, i * inftl->EraseSize + physblock)) | 309 | if (mtd_block_isbad(inftl->mbd.mtd, |
| 310 | i * inftl->EraseSize + physblock)) | ||
| 310 | inftl->PUtable[i] = BLOCK_RESERVED; | 311 | inftl->PUtable[i] = BLOCK_RESERVED; |
| 311 | } | 312 | } |
| 312 | } | 313 | } |
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c index 6d598b23cf3..a499bf7a821 100644 --- a/drivers/mtd/mtdchar.c +++ b/drivers/mtd/mtdchar.c | |||
| @@ -886,7 +886,7 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg) | |||
| 886 | if (!mtd->block_isbad) | 886 | if (!mtd->block_isbad) |
| 887 | ret = -EOPNOTSUPP; | 887 | ret = -EOPNOTSUPP; |
| 888 | else | 888 | else |
| 889 | return mtd->block_isbad(mtd, offs); | 889 | return mtd_block_isbad(mtd, offs); |
| 890 | break; | 890 | break; |
| 891 | } | 891 | } |
| 892 | 892 | ||
diff --git a/drivers/mtd/mtdconcat.c b/drivers/mtd/mtdconcat.c index 4b7f825ce01..d0db5e61d5a 100644 --- a/drivers/mtd/mtdconcat.c +++ b/drivers/mtd/mtdconcat.c | |||
| @@ -667,7 +667,7 @@ static int concat_block_isbad(struct mtd_info *mtd, loff_t ofs) | |||
| 667 | continue; | 667 | continue; |
| 668 | } | 668 | } |
| 669 | 669 | ||
| 670 | res = subdev->block_isbad(subdev, ofs); | 670 | res = mtd_block_isbad(subdev, ofs); |
| 671 | break; | 671 | break; |
| 672 | } | 672 | } |
| 673 | 673 | ||
diff --git a/drivers/mtd/mtdoops.c b/drivers/mtd/mtdoops.c index 7be2018ffbc..bc43d2f7272 100644 --- a/drivers/mtd/mtdoops.c +++ b/drivers/mtd/mtdoops.c | |||
| @@ -170,7 +170,7 @@ static void mtdoops_workfunc_erase(struct work_struct *work) | |||
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | while (mtd->block_isbad) { | 172 | while (mtd->block_isbad) { |
| 173 | ret = mtd->block_isbad(mtd, cxt->nextpage * record_size); | 173 | ret = mtd_block_isbad(mtd, cxt->nextpage * record_size); |
| 174 | if (!ret) | 174 | if (!ret) |
| 175 | break; | 175 | break; |
| 176 | if (ret < 0) { | 176 | if (ret < 0) { |
| @@ -254,7 +254,7 @@ static void find_next_position(struct mtdoops_context *cxt) | |||
| 254 | 254 | ||
| 255 | for (page = 0; page < cxt->oops_pages; page++) { | 255 | for (page = 0; page < cxt->oops_pages; page++) { |
| 256 | if (mtd->block_isbad && | 256 | if (mtd->block_isbad && |
| 257 | mtd->block_isbad(mtd, page * record_size)) | 257 | mtd_block_isbad(mtd, page * record_size)) |
| 258 | continue; | 258 | continue; |
| 259 | /* Assume the page is used */ | 259 | /* Assume the page is used */ |
| 260 | mark_page_used(cxt, page); | 260 | mark_page_used(cxt, page); |
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c index 8610750852a..0e7dfc79d33 100644 --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c | |||
| @@ -322,7 +322,7 @@ static int part_block_isbad(struct mtd_info *mtd, loff_t ofs) | |||
| 322 | if (ofs >= mtd->size) | 322 | if (ofs >= mtd->size) |
| 323 | return -EINVAL; | 323 | return -EINVAL; |
| 324 | ofs += part->offset; | 324 | ofs += part->offset; |
| 325 | return part->master->block_isbad(part->master, ofs); | 325 | return mtd_block_isbad(part->master, ofs); |
| 326 | } | 326 | } |
| 327 | 327 | ||
| 328 | static int part_block_markbad(struct mtd_info *mtd, loff_t ofs) | 328 | static int part_block_markbad(struct mtd_info *mtd, loff_t ofs) |
| @@ -553,8 +553,7 @@ static struct mtd_part *allocate_partition(struct mtd_info *master, | |||
| 553 | uint64_t offs = 0; | 553 | uint64_t offs = 0; |
| 554 | 554 | ||
| 555 | while (offs < slave->mtd.size) { | 555 | while (offs < slave->mtd.size) { |
| 556 | if (master->block_isbad(master, | 556 | if (mtd_block_isbad(master, offs + slave->offset)) |
| 557 | offs + slave->offset)) | ||
| 558 | slave->mtd.ecc_stats.badblocks++; | 557 | slave->mtd.ecc_stats.badblocks++; |
| 559 | offs += slave->mtd.erasesize; | 558 | offs += slave->mtd.erasesize; |
| 560 | } | 559 | } |
diff --git a/drivers/mtd/mtdswap.c b/drivers/mtd/mtdswap.c index cb794e76101..87aa0a6323c 100644 --- a/drivers/mtd/mtdswap.c +++ b/drivers/mtd/mtdswap.c | |||
| @@ -343,7 +343,7 @@ static int mtdswap_read_markers(struct mtdswap_dev *d, struct swap_eb *eb) | |||
| 343 | offset = mtdswap_eb_offset(d, eb); | 343 | offset = mtdswap_eb_offset(d, eb); |
| 344 | 344 | ||
| 345 | /* Check first if the block is bad. */ | 345 | /* Check first if the block is bad. */ |
| 346 | if (d->mtd->block_isbad && d->mtd->block_isbad(d->mtd, offset)) | 346 | if (d->mtd->block_isbad && mtd_block_isbad(d->mtd, offset)) |
| 347 | return MTDSWAP_SCANNED_BAD; | 347 | return MTDSWAP_SCANNED_BAD; |
| 348 | 348 | ||
| 349 | ops.ooblen = 2 * d->mtd->ecclayout->oobavail; | 349 | ops.ooblen = 2 * d->mtd->ecclayout->oobavail; |
| @@ -1061,7 +1061,7 @@ static unsigned int mtdswap_badblocks(struct mtd_info *mtd, uint64_t size) | |||
| 1061 | 1061 | ||
| 1062 | if (mtd->block_isbad) | 1062 | if (mtd->block_isbad) |
| 1063 | for (offset = 0; offset < size; offset += mtd->erasesize) | 1063 | for (offset = 0; offset < size; offset += mtd->erasesize) |
| 1064 | if (mtd->block_isbad(mtd, offset)) | 1064 | if (mtd_block_isbad(mtd, offset)) |
| 1065 | badcnt++; | 1065 | badcnt++; |
| 1066 | 1066 | ||
| 1067 | return badcnt; | 1067 | return badcnt; |
diff --git a/drivers/mtd/nftlmount.c b/drivers/mtd/nftlmount.c index b068dc8a366..156af9f8796 100644 --- a/drivers/mtd/nftlmount.c +++ b/drivers/mtd/nftlmount.c | |||
| @@ -242,7 +242,8 @@ The new DiskOnChip driver already scanned the bad block table. Just query it. | |||
| 242 | if (buf[i & (SECTORSIZE - 1)] != 0xff) | 242 | if (buf[i & (SECTORSIZE - 1)] != 0xff) |
| 243 | nftl->ReplUnitTable[i] = BLOCK_RESERVED; | 243 | nftl->ReplUnitTable[i] = BLOCK_RESERVED; |
| 244 | #endif | 244 | #endif |
| 245 | if (nftl->mbd.mtd->block_isbad(nftl->mbd.mtd, i * nftl->EraseSize)) | 245 | if (mtd_block_isbad(nftl->mbd.mtd, |
| 246 | i * nftl->EraseSize)) | ||
| 246 | nftl->ReplUnitTable[i] = BLOCK_RESERVED; | 247 | nftl->ReplUnitTable[i] = BLOCK_RESERVED; |
| 247 | } | 248 | } |
| 248 | 249 | ||
diff --git a/drivers/mtd/redboot.c b/drivers/mtd/redboot.c index 623d9b86d0d..09bb81ea3a7 100644 --- a/drivers/mtd/redboot.c +++ b/drivers/mtd/redboot.c | |||
| @@ -79,7 +79,7 @@ static int parse_redboot_partitions(struct mtd_info *master, | |||
| 79 | if ( directory < 0 ) { | 79 | if ( directory < 0 ) { |
| 80 | offset = master->size + directory * master->erasesize; | 80 | offset = master->size + directory * master->erasesize; |
| 81 | while (master->block_isbad && | 81 | while (master->block_isbad && |
| 82 | master->block_isbad(master, offset)) { | 82 | mtd_block_isbad(master, offset)) { |
| 83 | if (!offset) { | 83 | if (!offset) { |
| 84 | nogood: | 84 | nogood: |
| 85 | printk(KERN_NOTICE "Failed to find a non-bad block to check for RedBoot partition table\n"); | 85 | printk(KERN_NOTICE "Failed to find a non-bad block to check for RedBoot partition table\n"); |
| @@ -90,7 +90,7 @@ static int parse_redboot_partitions(struct mtd_info *master, | |||
| 90 | } else { | 90 | } else { |
| 91 | offset = directory * master->erasesize; | 91 | offset = directory * master->erasesize; |
| 92 | while (master->block_isbad && | 92 | while (master->block_isbad && |
| 93 | master->block_isbad(master, offset)) { | 93 | mtd_block_isbad(master, offset)) { |
| 94 | offset += master->erasesize; | 94 | offset += master->erasesize; |
| 95 | if (offset == master->size) | 95 | if (offset == master->size) |
| 96 | goto nogood; | 96 | goto nogood; |
diff --git a/drivers/mtd/ssfdc.c b/drivers/mtd/ssfdc.c index 0e688133835..ab2a52a039c 100644 --- a/drivers/mtd/ssfdc.c +++ b/drivers/mtd/ssfdc.c | |||
| @@ -122,7 +122,7 @@ static int get_valid_cis_sector(struct mtd_info *mtd) | |||
| 122 | * is not SSFDC formatted | 122 | |
