From 5a443ae7d0bc2ca3befca9751a58ce459b9afe1d Mon Sep 17 00:00:00 2001 From: hangyudu Date: Wed, 10 Dec 2025 23:43:21 +0800 Subject: [PATCH] [ch6][fix]fix round up error during data block allocation --- easy-fs/src/efs.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/easy-fs/src/efs.rs b/easy-fs/src/efs.rs index 8e9d5d27..2706d96c 100644 --- a/easy-fs/src/efs.rs +++ b/easy-fs/src/efs.rs @@ -41,7 +41,12 @@ impl EasyFileSystem { ((inode_num * core::mem::size_of::() + BLOCK_SZ - 1) / BLOCK_SZ) as u32; let inode_total_blocks = inode_bitmap_blocks + inode_area_blocks; let data_total_blocks = total_blocks - 1 - inode_total_blocks; - let data_bitmap_blocks = (data_total_blocks + 4096) / 4097; + let data_bitmap_blocks = data_total_blocks / 4097; + assert!( + data_bitmap_blocks >= 1, + "Not enough blocks for data bitmap! data_total_blocks={}", + data_total_blocks + ); let data_area_blocks = data_total_blocks - data_bitmap_blocks; let data_bitmap = Bitmap::new( (1 + inode_bitmap_blocks + inode_area_blocks) as usize,