|
|
@ -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; |
|
|
|