static uint16_t virtual_block_to_physical_block(uint16_t virtualBank, uint16_t virtualBlock) { if(isGoodBlock(pstVFLCxt[virtualBank].badBlockTable, virtualBlock)) return virtualBlock; int pwDesPbn; for(pwDesPbn = 0; pwDesPbn < pstVFLCxt[virtualBank].numReservedBlocks; pwDesPbn++) { if(pstVFLCxt[virtualBank].reservedBlockPoolMap[pwDesPbn] == virtualBlock) { if(pwDesPbn >= Data->blocksPerBank) { bufferPrintf("ftl: Destination physical block for remapping is greater than number of blocks per bank!"); } return pstVFLCxt[virtualBank].reservedBlockPoolStart + pwDesPbn; } } return virtualBlock; }
static u16 virtual_block_to_physical_block(u16 virtualBank, u16 virtualBlock) { int pwDesPbn; if(isGoodBlock(pstVFLCxt[virtualBank].badBlockTable, virtualBlock)) return virtualBlock; for(pwDesPbn = 0; pwDesPbn < pstVFLCxt[virtualBank].numReservedBlocks; pwDesPbn++) { if(pstVFLCxt[virtualBank].reservedBlockPoolMap[pwDesPbn] == virtualBlock) { if(pwDesPbn >= NANDGeometry->blocksPerBank) { LOG("ftl: Destination physical block for remapping is greater than number of blocks per bank!"); } return pstVFLCxt[virtualBank].reservedBlockPoolStart + pwDesPbn; } } return virtualBlock; }