diff --git a/source/fs/mufs/tree.c b/source/fs/mufs/tree.c index a0a3218..1cf00ec 100644 --- a/source/fs/mufs/tree.c +++ b/source/fs/mufs/tree.c @@ -256,9 +256,6 @@ static size_t mufs_do_write(struct mufs_tree *tree, va = align(va, dev->log2_block_size); len = min(len, (UINT32_C(1) << dev->log2_block_size) - offset); - if (mufs_extend_tree(tree, 1) < 0) - return 0; - if (mufs_alloc_page(tree, &page, va) < 0) return 0; @@ -272,6 +269,9 @@ size_t mufs_tree_write(struct mufs_tree *tree, void *data, uint8_t *buf = data; size_t ret, nbytes = 0; + if (mufs_extend_tree(tree, 1) < 0) + return 0; + while (len) { if ((ret = mufs_do_write(tree, buf, va, len)) == 0) return nbytes;