|
|
|
@ -87,11 +87,15 @@ int read_page_desc(struct ftl_map *map, |
|
|
|
|
{ |
|
|
|
|
uint32_t addr, offset; |
|
|
|
|
|
|
|
|
|
addr = align(upage, map->log2_pages_per_group) + |
|
|
|
|
(1 << map->log2_pages_per_group) - 1; |
|
|
|
|
|
|
|
|
|
if (addr == upage) |
|
|
|
|
return -1; |
|
|
|
|
|
|
|
|
|
addr <<= map->log2_page_size; |
|
|
|
|
offset = sizeof(struct ftl_page_group) + |
|
|
|
|
BIT_MASK(upage, map->log2_pages_per_group) * sizeof *page_desc; |
|
|
|
|
upage = align(upage, map->log2_pages_per_group) + |
|
|
|
|
(1 << map->log2_pages_per_group) - 1; |
|
|
|
|
addr = upage << map->log2_page_size; |
|
|
|
|
|
|
|
|
|
if (flash_read(map->dev, addr + offset, page_desc, sizeof *page_desc) == 0) |
|
|
|
|
return -1; |
|
|
|
|