GreedyFTL has an issue to ignore the last bad block for each bank

From OpenSSDWiki
Viewed 5850 times, With a total of 1 Posts
Jump to: navigation, search

Clicked A Few Times
Threads 5
Posts 9
It is required to replace num_entries with num_entries+1 in the following statements.

ftl_greedy\ftl.c(227): if (mem_search_equ_dram(scan_list, sizeof(UINT16), num_entries+1, pblk_offset) < num_entries+1)
ftl_greedy\ftl.c(234): if (mem_search_equ_dram(scan_list, sizeof(UINT16), num_entries+1, pblk_offset) < num_entries+1)
ftl_greedy\ftl.c(241): if (mem_search_equ_dram(scan_list, sizeof(UINT16), num_entries+1, vblk_offset) < num_entries+1)

For example, if there are 4 bad blocks for bank #1 reported by installer, then the function reports only 3 bad blocks for this bank in the FTL.

Supposed that the bad block number is a1, a2, a3, a4.

Then, scan_list->num_entries is 0, scan_list->list is a1, a2, a3, a4.

So the content of scan_list is [0, a1, a2, a3, a4]

mem_search_equ_dram(scan_list, sizeof(UINT16), num_entries, pblk_offset) will match the block number from scan_list, to compare 4 times (num_entries=4), so it will not check the last entry (a4), it only checks [0, a1, a2, a3]. So the block a4 is not marked as the bad block.

The author of GreedyFTL, Mr. Sang-Phil Lim, has verified the existence of this issue, and said that the fix will be included in the next release, OpenSSD 1.0.7.
Edited On 7:08:25 AM - Sat, Nov 26th 2011 by Victortan

Clicked A Few Times
Threads 4
Posts 9
Thank you so much.
Sang-Phil Lim (M.S. Candidate Student)

VLDB Lab. (
Department of Embedded Software
Sungkyunkwan Univ., Korea.

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
Personal tools