flash: return size for flash_read() and flash_write()

This commit is contained in:
S.J.R. van Schaik 2017-05-19 18:20:50 +02:00
parent d631e3012e
commit 937521c909
7 changed files with 59 additions and 41 deletions

View file

@ -53,7 +53,10 @@ int read_page_group(struct ftl_map *map,
page = ((group_no + 1) << map->log2_pages_per_group) - 1;
addr = page << map->log2_page_size;
return flash_read(map->dev, addr, group, sizeof *group);
if (flash_read(map->dev, addr, group, sizeof *group) == 0)
return -1;
return 0;
}
/* Given the page number of a user page, reads the page descriptor associated
@ -71,7 +74,10 @@ int read_page_desc(struct ftl_map *map,
offset = sizeof(struct ftl_page_group) +
(upage & ((1 << map->log2_pages_per_group) - 1)) * sizeof *page_desc;
return flash_read(map->dev, addr + offset, page_desc, sizeof *page_desc);
if (flash_read(map->dev, addr + offset, page_desc, sizeof *page_desc) == 0)
return -1;
return 0;
}
/* Writes the page descriptor to the footer of the current page group and
@ -93,14 +99,14 @@ static int write_page_desc(struct ftl_map *map,
group.epoch = map->epoch;
group.tail = map->tail;
if (flash_write(map->dev, addr, &group, sizeof group) < 0)
if (flash_write(map->dev, addr, &group, sizeof group) == 0)
return -1;
}
offset = sizeof group + (map->head & ((1 << map->log2_pages_per_group) - 1)) *
sizeof *page_desc;
if (flash_write(map->dev, addr + offset, page_desc, sizeof *page_desc) < 0)
if (flash_write(map->dev, addr + offset, page_desc, sizeof *page_desc) == 0)
return -1;
map->root = map->head;
@ -126,7 +132,7 @@ int write_upage(struct ftl_map *map, const void *page,
return -1;
if (page && flash_write(map->dev, map->head << map->log2_page_size, page,
map->log2_page_size) < 0)
map->log2_page_size) == 0)
return -1;
return write_page_desc(map, page_desc);
@ -179,7 +185,7 @@ static int find_block(struct ftl_map *map, struct ftl_page_group *group,
page = block << map->log2_block_size;
page |= ((UINT32_C(1) << map->log2_pages_per_group) - 1) << map->log2_page_size;
if (flash_read(map->dev, page, group, sizeof *group) < 0)
if (flash_read(map->dev, page, group, sizeof *group) == 0)
continue;
if (memcmp(group->magic, "FTL", sizeof group->magic) != 0)