mufs: fix an issue when determining the va of a tree object

tags/0.1.0
S.J.R. van Schaik 8 years ago
parent 3b25180038
commit d287d7616a
  1. 10
      source/fs/mufs/dir.c

@ -169,8 +169,10 @@ static size_t read_dirent(struct mufs *fs, struct mufs_tree *tree,
return 0;
dirent->tree.fs = fs;
dirent->tree.va <<= dev->log2_block_size;
dirent->tree.va |= base & ((UINT32_C(1) << dev->log2_block_size) - 1);
dirent->tree.va = dirent->tree.va << dev->log2_block_size;
/* TODO: get a proper offset to the tree. */
dirent->tree.va += 1;
dirent->tree.va += base & ((UINT32_C(1) << dev->log2_block_size) - 1);
dirent->tree.file_size = entry.file_size;
dirent->tree.root = entry.root;
dirent->tree.depth = entry.depth;
@ -209,8 +211,6 @@ static size_t write_dirent(struct mufs_tree *tree,
dtree.root = tree->root;
dtree.depth = tree->depth;
printf("updating tree->va=%u\n", tree->va);
if (flash_write(tree->fs->dev, tree->va, &dtree, sizeof dtree) == 0)
return 0;
@ -257,8 +257,6 @@ int mufs_mkdir(struct mufs *fs, const char *path)
while (*path == '/')
++path;
printf("path=%s\n", path);
if (!(s = strdup(path)))
return -1;

Loading…
Cancel
Save