From 52a7ec1fae7fcc48466d154b646c64cfc4c7030d Mon Sep 17 00:00:00 2001 From: "S.J.R. van Schaik" Date: Tue, 3 Oct 2017 14:20:47 +0200 Subject: [PATCH] mufs: call flash_sync() after each flash_write() --- source/mufs/tree.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/source/mufs/tree.c b/source/mufs/tree.c index df90c4e..230636a 100644 --- a/source/mufs/tree.c +++ b/source/mufs/tree.c @@ -278,6 +278,7 @@ static size_t mufs_do_write(struct mufs_tree *tree, { struct mufs *fs = tree->fs; struct flash_dev *dev = fs->dev; + size_t ret; uint32_t page, offset; offset = va & ((UINT32_C(1) << dev->log2_block_size) - 1); @@ -287,8 +288,16 @@ static size_t mufs_do_write(struct mufs_tree *tree, if (mufs_alloc_page(tree, &page, va) < 0) return 0; - return flash_write(dev, (page << dev->log2_block_size) + offset, data, + ret = flash_write(dev, (page << dev->log2_block_size) + offset, data, len); + + if (ret == 0) + return 0; + + if (flash_sync(dev) < 0) + return 0; + + return ret; } size_t mufs_tree_write(struct mufs_tree *tree, void *data, @@ -326,5 +335,5 @@ int mufs_sync_tree(struct mufs_tree *tree) if (flash_write(dev, tree->va, &dtree, sizeof dtree) == 0) return -1; - return 0; + return flash_sync(dev); }