f2fs: Allocate and stat mem used by free nid bitmap more accurately
This patch used f2fs_bitmap_size macro to calculate mem used by free nid bitmap, and stat used mem including aligned part. Signed-off-by: Yunlei He <heyunlei@huawei.com> Reviewed-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
9dc956b2c8
commit
e15d54d500
@ -215,7 +215,8 @@ static void update_mem_info(struct f2fs_sb_info *sbi)
|
|||||||
si->base_mem += sizeof(struct f2fs_nm_info);
|
si->base_mem += sizeof(struct f2fs_nm_info);
|
||||||
si->base_mem += __bitmap_size(sbi, NAT_BITMAP);
|
si->base_mem += __bitmap_size(sbi, NAT_BITMAP);
|
||||||
si->base_mem += (NM_I(sbi)->nat_bits_blocks << F2FS_BLKSIZE_BITS);
|
si->base_mem += (NM_I(sbi)->nat_bits_blocks << F2FS_BLKSIZE_BITS);
|
||||||
si->base_mem += NM_I(sbi)->nat_blocks * NAT_ENTRY_BITMAP_SIZE;
|
si->base_mem += NM_I(sbi)->nat_blocks *
|
||||||
|
f2fs_bitmap_size(NAT_ENTRY_PER_BLOCK);
|
||||||
si->base_mem += NM_I(sbi)->nat_blocks / 8;
|
si->base_mem += NM_I(sbi)->nat_blocks / 8;
|
||||||
si->base_mem += NM_I(sbi)->nat_blocks * sizeof(unsigned short);
|
si->base_mem += NM_I(sbi)->nat_blocks * sizeof(unsigned short);
|
||||||
|
|
||||||
|
@ -2797,7 +2797,7 @@ static int init_free_nid_cache(struct f2fs_sb_info *sbi)
|
|||||||
|
|
||||||
for (i = 0; i < nm_i->nat_blocks; i++) {
|
for (i = 0; i < nm_i->nat_blocks; i++) {
|
||||||
nm_i->free_nid_bitmap[i] = f2fs_kvzalloc(sbi,
|
nm_i->free_nid_bitmap[i] = f2fs_kvzalloc(sbi,
|
||||||
NAT_ENTRY_BITMAP_SIZE_ALIGNED, GFP_KERNEL);
|
f2fs_bitmap_size(NAT_ENTRY_PER_BLOCK), GFP_KERNEL);
|
||||||
if (!nm_i->free_nid_bitmap)
|
if (!nm_i->free_nid_bitmap)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
@ -304,11 +304,6 @@ struct f2fs_node {
|
|||||||
* For NAT entries
|
* For NAT entries
|
||||||
*/
|
*/
|
||||||
#define NAT_ENTRY_PER_BLOCK (PAGE_SIZE / sizeof(struct f2fs_nat_entry))
|
#define NAT_ENTRY_PER_BLOCK (PAGE_SIZE / sizeof(struct f2fs_nat_entry))
|
||||||
#define NAT_ENTRY_BITMAP_SIZE ((NAT_ENTRY_PER_BLOCK + 7) / 8)
|
|
||||||
#define NAT_ENTRY_BITMAP_SIZE_ALIGNED \
|
|
||||||
((NAT_ENTRY_BITMAP_SIZE + BITS_PER_LONG - 1) / \
|
|
||||||
BITS_PER_LONG * BITS_PER_LONG)
|
|
||||||
|
|
||||||
|
|
||||||
struct f2fs_nat_entry {
|
struct f2fs_nat_entry {
|
||||||
__u8 version; /* latest version of cached nat entry */
|
__u8 version; /* latest version of cached nat entry */
|
||||||
|
Loading…
Reference in New Issue
Block a user