mufs: properly format block allocation bitmap
This commit is contained in:
parent
3c35521979
commit
bcf844aab4
1 changed files with 15 additions and 1 deletions
|
@ -60,11 +60,25 @@ void mufs_unmount(struct mufs *fs)
|
|||
|
||||
int mufs_format(struct flash_dev *dev)
|
||||
{
|
||||
struct mufs fs;
|
||||
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);
|
||||
|
||||
super.nblocks = flash_get_capacity(dev) >> dev->log2_block_size;
|
||||
super.nblocks = fs.nblocks;
|
||||
|
||||
super.root.file_size = 0;
|
||||
super.root.root = 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue