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)
|
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…
Add table
Reference in a new issue