GreedyFTL may miss the last half part of p2l list

From OpenSSDWiki
Viewed 5264 times, With a total of 0 Posts
Jump to: navigation, search

Clicked A Few Times
Threads 5
Posts 9
The p2l list is stored in the last page of the block. However, only 1 sector is used to store the p2l list.

For some Flash chips, PAGES_PER_BLK is 256, so p2l list's size is 1024 bytes (4*256=1024), it requires 2 sectors to store the p2l list.

The following code works when PAGES_PER_BLK is 128 or smaller, but it will lead to p2l list lost when PAGES_PER_BLK is 256 or larger.

ftl_greedy\ftl.c(559):

       mem_copy(FTL_BUF(bank), g_misc_meta[bank].lpn_list_of_cur_vblock, sizeof(UINT32) * PAGES_PER_BLK);
nand_page_ptprogram(bank, vblock, PAGES_PER_BLK - 1, 0, 1, FTL_BUF(bank));


ftl_greedy\ftl.c(630):

   // 1. load p2l list from last page offset of victim block (4B x PAGES_PER_BLK)
nand_page_ptread(bank, vt_vblock, PAGES_PER_BLK - 1, 0, 1, FTL_BUF(bank), RETURN_WHEN_DONE);


Forum >> Jasmine OpenSSD Platform >> Jasmine Firmware



Who's here now Members 0 Guests 0 Bots/Crawler 0


AWC's: 2.5.12 MediaWiki - Stand Alone Forum Extension
Forum theme style by: AWC
Views
Personal tools