mufs: calculate proper byte offsets in mufs_read()/mufs_write()

This commit is contained in:
S.J.R. van Schaik 2017-05-29 18:55:37 +02:00
parent 8f74da799e
commit 55ce3b8798

View file

@ -177,7 +177,8 @@ static size_t mufs_do_read(struct mufs *fs, struct mufs_tree *tree,
if (mufs_lookup_page(fs, tree, &page, va) < 0)
return 0;
return flash_read(fs->dev, page, data, len);
return flash_read(fs->dev, (page << fs->dev->log2_block_size) + offset,
data, len);
}
size_t mufs_read(struct mufs *fs, struct mufs_tree *tree, void *data,
@ -209,10 +210,14 @@ static size_t mufs_do_write(struct mufs *fs, struct mufs_tree *tree,
memset(data, 0, len);
len = min(len, (UINT32_C(1) << fs->dev->log2_block_size) - offset);
if (mufs_extend_tree(fs, tree, 1) < 0)
return 0;
if (mufs_alloc_page(fs, tree, &page, va) < 0)
return 0;
return flash_write(fs->dev, page, data, len);
return flash_write(fs->dev, (page << fs->dev->log2_block_size) + offset,
data, len);
}
size_t mufs_write(struct mufs *fs, struct mufs_tree *tree, void *data,