Hi Xiaoming, Xiaoming Ni <nixiaoming@xxxxxxxxxx> wrote on Mon, 30 Mar 2020 22:25:36 +0800: > On 2020/3/30 21:52, Miquel Raynal wrote: > > Hi Xiaoming, > > > > Xiaoming Ni <nixiaoming@xxxxxxxxxx> wrote on Mon, 30 Mar 2020 21:45:25 > > +0800: > > > >> The function call process is as follows: > >> mtd_blktrans_work() > >> while (1) > >> do_blktrans_request() > >> mtdblock_writesect() > >> do_cached_write() > >> write_cached_data() /*if cache_state is STATE_DIRTY*/ > >> erase_write() > >> > >> write_cached_data() returns failure without modifying cache_state > >> and cache_offset. So when do_cached_write() is called again, > >> write_cached_data() will be called again to perform erase_write() > >> on the same cache_offset. > >> > >> But if this cache_offset points to a bad block, erase_write() will > >> always return -EIO. Writing to this mtdblk is equivalent to losing > >> the current data, and repeatedly writing to the bad block. > >> > >> Repeatedly writing a bad block has no real benefits, > >> but brings some negative effects: > >> 1 Lost subsequent data > >> 2 Loss of flash device life > >> 3 erase_write() bad blocks are very time-consuming. For example: > >> the function do_erase_oneblock() in chips/cfi_cmdset_0020.c or > >> chips/cfi_cmdset_0002.c may take more than 20 seconds to return > >> > >> Therefore, when erase_write() returns -EIO in write_cached_data(), > >> clear cache_state to avoid writing to bad blocks repeatedly. > >> > >> Signed-off-by: Xiaoming Ni <nixiaoming@xxxxxxxxxx> > >> Reviewed-by: Miquel Raynal <miquel.raynal@xxxxxxxxxxx> > >> Cc: stable@xxxxxxxxxxxxxxx > > > > Still missing: > > * Fixes: tag > > * Wrong title prefix > > > > Fixes: 1da177e4c3f41524e88 "Linux-2.6.12-rc2" > > Is it described like this? The way to describe a commit is: Fixes: 1da177e4c3f4 ("Linux-...") But it is too old to be pointed, just drop both Fixes/Cc tags and just fix the title please. > > Do I need to go to > https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git > to trace back the older commit records? > > Thanks > Xiaoming Ni > > > > Thanks, Miquèl ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/