node.c (c56675750d7c45ce6cc21a67770629aaf41d1491) | node.c (bb1105e479fbb8b0edc6f35affec71b75e31c8c0) |
---|---|
1/* 2 * fs/f2fs/node.c 3 * 4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 5 * http://www.samsung.com/ 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as --- 2694 unchanged lines hidden (view full) --- 2703#endif 2704 2705 return 0; 2706} 2707 2708static int init_free_nid_cache(struct f2fs_sb_info *sbi) 2709{ 2710 struct f2fs_nm_info *nm_i = NM_I(sbi); | 1/* 2 * fs/f2fs/node.c 3 * 4 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 5 * http://www.samsung.com/ 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as --- 2694 unchanged lines hidden (view full) --- 2703#endif 2704 2705 return 0; 2706} 2707 2708static int init_free_nid_cache(struct f2fs_sb_info *sbi) 2709{ 2710 struct f2fs_nm_info *nm_i = NM_I(sbi); |
2711 int i; |
|
2711 | 2712 |
2712 nm_i->free_nid_bitmap = f2fs_kvzalloc(sbi, nm_i->nat_blocks * 2713 NAT_ENTRY_BITMAP_SIZE, GFP_KERNEL); | 2713 nm_i->free_nid_bitmap = f2fs_kzalloc(sbi, nm_i->nat_blocks * 2714 sizeof(unsigned char *), GFP_KERNEL); |
2714 if (!nm_i->free_nid_bitmap) 2715 return -ENOMEM; 2716 | 2715 if (!nm_i->free_nid_bitmap) 2716 return -ENOMEM; 2717 |
2718 for (i = 0; i < nm_i->nat_blocks; i++) { 2719 nm_i->free_nid_bitmap[i] = f2fs_kvzalloc(sbi, 2720 NAT_ENTRY_BITMAP_SIZE_ALIGNED, GFP_KERNEL); 2721 if (!nm_i->free_nid_bitmap) 2722 return -ENOMEM; 2723 } 2724 |
|
2717 nm_i->nat_block_bitmap = f2fs_kvzalloc(sbi, nm_i->nat_blocks / 8, 2718 GFP_KERNEL); 2719 if (!nm_i->nat_block_bitmap) 2720 return -ENOMEM; 2721 2722 nm_i->free_nid_count = f2fs_kvzalloc(sbi, nm_i->nat_blocks * 2723 sizeof(unsigned short), GFP_KERNEL); 2724 if (!nm_i->free_nid_count) --- 74 unchanged lines hidden (view full) --- 2799 f2fs_bug_on(sbi, !list_empty(&setvec[idx]->entry_list)); 2800 radix_tree_delete(&nm_i->nat_set_root, setvec[idx]->set); 2801 kmem_cache_free(nat_entry_set_slab, setvec[idx]); 2802 } 2803 } 2804 up_write(&nm_i->nat_tree_lock); 2805 2806 kvfree(nm_i->nat_block_bitmap); | 2725 nm_i->nat_block_bitmap = f2fs_kvzalloc(sbi, nm_i->nat_blocks / 8, 2726 GFP_KERNEL); 2727 if (!nm_i->nat_block_bitmap) 2728 return -ENOMEM; 2729 2730 nm_i->free_nid_count = f2fs_kvzalloc(sbi, nm_i->nat_blocks * 2731 sizeof(unsigned short), GFP_KERNEL); 2732 if (!nm_i->free_nid_count) --- 74 unchanged lines hidden (view full) --- 2807 f2fs_bug_on(sbi, !list_empty(&setvec[idx]->entry_list)); 2808 radix_tree_delete(&nm_i->nat_set_root, setvec[idx]->set); 2809 kmem_cache_free(nat_entry_set_slab, setvec[idx]); 2810 } 2811 } 2812 up_write(&nm_i->nat_tree_lock); 2813 2814 kvfree(nm_i->nat_block_bitmap); |
2807 kvfree(nm_i->free_nid_bitmap); | 2815 if (nm_i->free_nid_bitmap) { 2816 int i; 2817 2818 for (i = 0; i < nm_i->nat_blocks; i++) 2819 kvfree(nm_i->free_nid_bitmap[i]); 2820 kfree(nm_i->free_nid_bitmap); 2821 } |
2808 kvfree(nm_i->free_nid_count); 2809 2810 kfree(nm_i->nat_bitmap); 2811 kfree(nm_i->nat_bits); 2812#ifdef CONFIG_F2FS_CHECK_FS 2813 kfree(nm_i->nat_bitmap_mir); 2814#endif 2815 sbi->nm_info = NULL; --- 35 unchanged lines hidden --- | 2822 kvfree(nm_i->free_nid_count); 2823 2824 kfree(nm_i->nat_bitmap); 2825 kfree(nm_i->nat_bits); 2826#ifdef CONFIG_F2FS_CHECK_FS 2827 kfree(nm_i->nat_bitmap_mir); 2828#endif 2829 sbi->nm_info = NULL; --- 35 unchanged lines hidden --- |