kernel: mtk_bmt: fix block copying on remap with bmt v2
Copy from the previously mapped block (in case it was remapped already) Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
b4c7f8c5f7
commit
7d1e2be160
1 changed files with 6 additions and 6 deletions
|
@ -285,21 +285,21 @@ error:
|
||||||
*/
|
*/
|
||||||
static bool remap_block_v2(u16 block, u16 mapped_block, int copy_len)
|
static bool remap_block_v2(u16 block, u16 mapped_block, int copy_len)
|
||||||
{
|
{
|
||||||
u16 mapped_blk;
|
u16 new_block;
|
||||||
struct bbbt *bbt;
|
struct bbbt *bbt;
|
||||||
|
|
||||||
bbt = bmtd.bbt;
|
bbt = bmtd.bbt;
|
||||||
mapped_blk = find_valid_block_in_pool(bbt);
|
new_block = find_valid_block_in_pool(bbt);
|
||||||
if (mapped_blk == 0)
|
if (new_block == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* Map new bad block to available block in pool */
|
/* Map new bad block to available block in pool */
|
||||||
bbt->bb_tbl[block] = mapped_blk;
|
bbt->bb_tbl[block] = new_block;
|
||||||
|
|
||||||
/* Erase new block */
|
/* Erase new block */
|
||||||
bbt_nand_erase(mapped_blk);
|
bbt_nand_erase(new_block);
|
||||||
if (copy_len > 0)
|
if (copy_len > 0)
|
||||||
bbt_nand_copy(mapped_blk, block, copy_len);
|
bbt_nand_copy(new_block, mapped_block, copy_len);
|
||||||
|
|
||||||
bmtd.bmt_blk_idx = upload_bmt(bbt, bmtd.bmt_blk_idx);
|
bmtd.bmt_blk_idx = upload_bmt(bbt, bmtd.bmt_blk_idx);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue