From 25774eaab5ec6c37f42f803d70b57291c08483ac Mon Sep 17 00:00:00 2001 From: "S.J.R. van Schaik" Date: Mon, 24 Jul 2017 15:26:22 +0200 Subject: [PATCH] ftl: sync dirty writes before reading or trimming --- source/ftl/ftl.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/ftl/ftl.c b/source/ftl/ftl.c index 6f08e40..91a1dfb 100644 --- a/source/ftl/ftl.c +++ b/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;