mufs: properly format block allocation bitmap

tags/0.1.0
S.J.R. van Schaik 8 years ago
parent 3c35521979
commit bcf844aab4
  1. 16
      source/fs/mufs/super.c

@ -60,11 +60,25 @@ void mufs_unmount(struct mufs *fs)
int mufs_format(struct flash_dev *dev) int mufs_format(struct flash_dev *dev)
{ {
struct mufs fs;
struct mufs_super super; struct mufs_super super;
uint8_t log2_bits_per_block = dev->log2_block_size + ilog2(8);
size_t nbitmap_size;
uint32_t block;
fs.dev = dev;
fs.nblocks = flash_get_capacity(dev) >> dev->log2_block_size;
nbitmap_size = align_up(fs.nblocks, log2_bits_per_block) >>
log2_bits_per_block;
flash_erase(dev, 1, nbitmap_size);
for (block = 0; block < 1 + nbitmap_size; ++block)
mufs_mark_block(&fs, block, 1);
memcpy(super.magic, "mufs", 4); memcpy(super.magic, "mufs", 4);
super.nblocks = flash_get_capacity(dev) >> dev->log2_block_size; super.nblocks = fs.nblocks;
super.root.file_size = 0; super.root.file_size = 0;
super.root.root = 0; super.root.root = 0;

Loading…
Cancel
Save