ftl: sync dirty writes before reading or trimming

tags/0.1.0
S.J.R. van Schaik 8 years ago
parent 070c36a361
commit 25774eaab5
  1. 6
      source/ftl/ftl.c

@ -28,6 +28,9 @@ size_t ftl_read(struct ftl_map *map, void *data, size_t len, uint32_t va)
if (!data)
return 0;
if (ftl_sync(map) < 0)
return 0;
offset = va & ((1 << map->log2_page_size) - 1);
va >>= map->log2_page_size;
len = min(len, (1 << map->log2_page_size) - offset);
@ -150,6 +153,9 @@ int ftl_trim(struct ftl_map *map, uint32_t va)
uint32_t alt_page, page;
int ret;
if (ftl_sync(map) < 0)
return -1;
if ((ret = trace_path(map, &page_desc, &page, va)) < 0) {
if (ret == -ERR_NOT_FOUND)
return 0;

Loading…
Cancel
Save