mufs: mufs_mount() read the tree pointer of the root directory

tags/0.1.0
S.J.R. van Schaik 7 years ago
parent 0c284d1ba7
commit c5c24788c8
  1. 7
      include/fs/mufs.h
  2. 5
      source/fs/mufs/super.c
  3. 5
      source/fs/mufs/tree.h

@ -2,10 +2,15 @@
struct flash_dev;
struct mufs_tree {
uint32_t root;
uint8_t depth;
};
struct mufs {
struct flash_dev *dev;
uint32_t nblocks;
uint32_t root;
struct mufs_tree root;
};
int mufs_mount(struct mufs *fs, struct flash_dev *dev);

@ -10,6 +10,7 @@ struct mufs_super {
char magic[4];
uint32_t nblocks;
uint32_t root;
uint8_t depth;
} __attribute__((packed));
int mufs_mount(struct mufs *fs, struct flash_dev *dev)
@ -27,7 +28,8 @@ int mufs_mount(struct mufs *fs, struct flash_dev *dev)
fs->dev = dev;
fs->nblocks = super.nblocks;
fs->root = super.root;
fs->root.root = super.root;
fs->root.depth = super.depth;
return 0;
}
@ -39,6 +41,7 @@ int mufs_format(struct flash_dev *dev)
memcpy(super.magic, "mufs", 4);
super.nblocks = flash_get_capacity(dev) >> dev->log2_block_size;
super.root = 0;
super.depth = 0;
if (flash_write(dev, 0, &super, sizeof super) == 0)
return -1;

@ -1,10 +1,5 @@
#pragma once
struct mufs_tree {
uint32_t root;
uint8_t depth;
};
int mufs_lookup_page(struct mufs *fs, struct mufs_tree *tree, uint32_t *page,
uint32_t va);
int mufs_alloc_page(struct mufs *fs, struct mufs_tree *tree, uint32_t *page,

Loading…
Cancel
Save