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