Lines Matching refs:sbi

667 	struct ext4_sb_info *sbi = EXT4_SB(sb);  in ext4_mb_mark_free_simple()  local
692 buddy + sbi->s_mb_offsets[min]); in ext4_mb_mark_free_simple()
725 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mb_generate_buddy() local
764 percpu_counter_sub(&sbi->s_freeclusters_counter, in ext4_mb_generate_buddy()
1111 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mb_load_buddy() local
1112 struct inode *inode = sbi->s_buddy_cache; in ext4_mb_load_buddy()
1442 struct ext4_sb_info *sbi = EXT4_SB(sb); in mb_free_blocks() local
1454 percpu_counter_sub(&sbi->s_freeclusters_counter, in mb_free_blocks()
1626 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); in ext4_mb_use_best_found() local
1657 spin_lock(&sbi->s_md_lock); in ext4_mb_use_best_found()
1658 sbi->s_mb_last_group = ac->ac_f_ex.fe_group; in ext4_mb_use_best_found()
1659 sbi->s_mb_last_start = ac->ac_f_ex.fe_start; in ext4_mb_use_best_found()
1660 spin_unlock(&sbi->s_md_lock); in ext4_mb_use_best_found()
1672 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); in ext4_mb_check_limits() local
1683 if (ac->ac_found > sbi->s_mb_max_to_scan && in ext4_mb_check_limits()
1695 if ((finish_group || ac->ac_found > sbi->s_mb_min_to_scan) in ext4_mb_check_limits()
1812 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); in ext4_mb_find_by_goal() local
1835 if (max >= ac->ac_g_ex.fe_len && ac->ac_g_ex.fe_len == sbi->s_stripe) { in ext4_mb_find_by_goal()
1841 if (do_div(start, sbi->s_stripe) == 0) { in ext4_mb_find_by_goal()
1981 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mb_scan_aligned() local
1989 BUG_ON(sbi->s_stripe == 0); in ext4_mb_scan_aligned()
1994 a = first_group_block + sbi->s_stripe - 1; in ext4_mb_scan_aligned()
1995 do_div(a, sbi->s_stripe); in ext4_mb_scan_aligned()
1996 i = (a * sbi->s_stripe) - first_group_block; in ext4_mb_scan_aligned()
2000 max = mb_find_extent(e4b, i, sbi->s_stripe, &ex); in ext4_mb_scan_aligned()
2001 if (max >= sbi->s_stripe) { in ext4_mb_scan_aligned()
2009 i += sbi->s_stripe; in ext4_mb_scan_aligned()
2084 struct ext4_sb_info *sbi; in ext4_mb_regular_allocator() local
2089 sbi = EXT4_SB(sb); in ext4_mb_regular_allocator()
2093 ngroups = sbi->s_blockfile_groups; in ext4_mb_regular_allocator()
2117 if (i >= sbi->s_mb_order2_reqs) { in ext4_mb_regular_allocator()
2128 spin_lock(&sbi->s_md_lock); in ext4_mb_regular_allocator()
2129 ac->ac_g_ex.fe_group = sbi->s_mb_last_group; in ext4_mb_regular_allocator()
2130 ac->ac_g_ex.fe_start = sbi->s_mb_last_start; in ext4_mb_regular_allocator()
2131 spin_unlock(&sbi->s_md_lock); in ext4_mb_regular_allocator()
2181 else if (cr == 1 && sbi->s_stripe && in ext4_mb_regular_allocator()
2182 !(ac->ac_g_ex.fe_len % sbi->s_stripe)) in ext4_mb_regular_allocator()
2216 atomic_inc(&sbi->s_mb_lost_chunks); in ext4_mb_regular_allocator()
2345 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mb_alloc_groupinfo() local
2351 if (size <= sbi->s_group_info_size) in ext4_mb_alloc_groupinfo()
2354 size = roundup_pow_of_two(sizeof(*sbi->s_group_info) * size); in ext4_mb_alloc_groupinfo()
2360 if (sbi->s_group_info) { in ext4_mb_alloc_groupinfo()
2361 memcpy(new_groupinfo, sbi->s_group_info, in ext4_mb_alloc_groupinfo()
2362 sbi->s_group_info_size * sizeof(*sbi->s_group_info)); in ext4_mb_alloc_groupinfo()
2363 kvfree(sbi->s_group_info); in ext4_mb_alloc_groupinfo()
2365 sbi->s_group_info = new_groupinfo; in ext4_mb_alloc_groupinfo()
2366 sbi->s_group_info_size = size / sizeof(*sbi->s_group_info); in ext4_mb_alloc_groupinfo()
2368 sbi->s_group_info_size); in ext4_mb_alloc_groupinfo()
2378 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mb_add_groupinfo() local
2396 sbi->s_group_info[group >> EXT4_DESC_PER_BLOCK_BITS(sb)] = in ext4_mb_add_groupinfo()
2401 sbi->s_group_info[group >> EXT4_DESC_PER_BLOCK_BITS(sb)]; in ext4_mb_add_groupinfo()
2448 kfree(sbi->s_group_info[group >> EXT4_DESC_PER_BLOCK_BITS(sb)]); in ext4_mb_add_groupinfo()
2449 sbi->s_group_info[group >> EXT4_DESC_PER_BLOCK_BITS(sb)] = NULL; in ext4_mb_add_groupinfo()
2459 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mb_init_backend() local
2468 sbi->s_buddy_cache = new_inode(sb); in ext4_mb_init_backend()
2469 if (sbi->s_buddy_cache == NULL) { in ext4_mb_init_backend()
2477 sbi->s_buddy_cache->i_ino = EXT4_BAD_INO; in ext4_mb_init_backend()
2478 EXT4_I(sbi->s_buddy_cache)->i_disksize = 0; in ext4_mb_init_backend()
2495 i = sbi->s_group_info_size; in ext4_mb_init_backend()
2497 kfree(sbi->s_group_info[i]); in ext4_mb_init_backend()
2498 iput(sbi->s_buddy_cache); in ext4_mb_init_backend()
2500 kvfree(sbi->s_group_info); in ext4_mb_init_backend()
2556 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mb_init() local
2562 i = (sb->s_blocksize_bits + 2) * sizeof(*sbi->s_mb_offsets); in ext4_mb_init()
2564 sbi->s_mb_offsets = kmalloc(i, GFP_KERNEL); in ext4_mb_init()
2565 if (sbi->s_mb_offsets == NULL) { in ext4_mb_init()
2570 i = (sb->s_blocksize_bits + 2) * sizeof(*sbi->s_mb_maxs); in ext4_mb_init()
2571 sbi->s_mb_maxs = kmalloc(i, GFP_KERNEL); in ext4_mb_init()
2572 if (sbi->s_mb_maxs == NULL) { in ext4_mb_init()
2582 sbi->s_mb_maxs[0] = sb->s_blocksize << 3; in ext4_mb_init()
2583 sbi->s_mb_offsets[0] = 0; in ext4_mb_init()
2590 sbi->s_mb_offsets[i] = offset; in ext4_mb_init()
2591 sbi->s_mb_maxs[i] = max; in ext4_mb_init()
2598 spin_lock_init(&sbi->s_md_lock); in ext4_mb_init()
2599 spin_lock_init(&sbi->s_bal_lock); in ext4_mb_init()
2601 sbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN; in ext4_mb_init()
2602 sbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN; in ext4_mb_init()
2603 sbi->s_mb_stats = MB_DEFAULT_STATS; in ext4_mb_init()
2604 sbi->s_mb_stream_request = MB_DEFAULT_STREAM_THRESHOLD; in ext4_mb_init()
2605 sbi->s_mb_order2_reqs = MB_DEFAULT_ORDER2_REQS; in ext4_mb_init()
2618 sbi->s_mb_group_prealloc = max(MB_DEFAULT_GROUP_PREALLOC >> in ext4_mb_init()
2619 sbi->s_cluster_bits, 32); in ext4_mb_init()
2628 if (sbi->s_stripe > 1) { in ext4_mb_init()
2629 sbi->s_mb_group_prealloc = roundup( in ext4_mb_init()
2630 sbi->s_mb_group_prealloc, sbi->s_stripe); in ext4_mb_init()
2633 sbi->s_locality_groups = alloc_percpu(struct ext4_locality_group); in ext4_mb_init()
2634 if (sbi->s_locality_groups == NULL) { in ext4_mb_init()
2640 lg = per_cpu_ptr(sbi->s_locality_groups, i); in ext4_mb_init()
2652 if (sbi->s_proc) in ext4_mb_init()
2653 proc_create_data("mb_groups", S_IRUGO, sbi->s_proc, in ext4_mb_init()
2659 free_percpu(sbi->s_locality_groups); in ext4_mb_init()
2660 sbi->s_locality_groups = NULL; in ext4_mb_init()
2662 kfree(sbi->s_mb_offsets); in ext4_mb_init()
2663 sbi->s_mb_offsets = NULL; in ext4_mb_init()
2664 kfree(sbi->s_mb_maxs); in ext4_mb_init()
2665 sbi->s_mb_maxs = NULL; in ext4_mb_init()
2693 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mb_release() local
2696 if (sbi->s_proc) in ext4_mb_release()
2697 remove_proc_entry("mb_groups", sbi->s_proc); in ext4_mb_release()
2699 if (sbi->s_group_info) { in ext4_mb_release()
2714 kfree(sbi->s_group_info[i]); in ext4_mb_release()
2715 kvfree(sbi->s_group_info); in ext4_mb_release()
2717 kfree(sbi->s_mb_offsets); in ext4_mb_release()
2718 kfree(sbi->s_mb_maxs); in ext4_mb_release()
2719 iput(sbi->s_buddy_cache); in ext4_mb_release()
2720 if (sbi->s_mb_stats) { in ext4_mb_release()
2723 atomic_read(&sbi->s_bal_allocated), in ext4_mb_release()
2724 atomic_read(&sbi->s_bal_reqs), in ext4_mb_release()
2725 atomic_read(&sbi->s_bal_success)); in ext4_mb_release()
2729 atomic_read(&sbi->s_bal_ex_scanned), in ext4_mb_release()
2730 atomic_read(&sbi->s_bal_goals), in ext4_mb_release()
2731 atomic_read(&sbi->s_bal_2orders), in ext4_mb_release()
2732 atomic_read(&sbi->s_bal_breaks), in ext4_mb_release()
2733 atomic_read(&sbi->s_mb_lost_chunks)); in ext4_mb_release()
2736 sbi->s_mb_buddies_generated, in ext4_mb_release()
2737 sbi->s_mb_generation_time); in ext4_mb_release()
2740 atomic_read(&sbi->s_mb_preallocated), in ext4_mb_release()
2741 atomic_read(&sbi->s_mb_discarded)); in ext4_mb_release()
2744 free_percpu(sbi->s_locality_groups); in ext4_mb_release()
2876 struct ext4_sb_info *sbi; in ext4_mb_mark_diskspace_used() local
2885 sbi = EXT4_SB(sb); in ext4_mb_mark_diskspace_used()
2912 len = EXT4_C2B(sbi, ac->ac_b_ex.fe_len); in ext4_mb_mark_diskspace_used()
2913 if (!ext4_data_block_valid(sbi, block, len)) { in ext4_mb_mark_diskspace_used()
2954 percpu_counter_sub(&sbi->s_freeclusters_counter, ac->ac_b_ex.fe_len); in ext4_mb_mark_diskspace_used()
2960 percpu_counter_sub(&sbi->s_dirtyclusters_counter, in ext4_mb_mark_diskspace_used()
2963 if (sbi->s_log_groups_per_flex) { in ext4_mb_mark_diskspace_used()
2964 ext4_group_t flex_group = ext4_flex_group(sbi, in ext4_mb_mark_diskspace_used()
2967 &sbi->s_flex_groups[flex_group].free_clusters); in ext4_mb_mark_diskspace_used()
3008 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); in ext4_mb_normalize_request() local
3040 size = ac->ac_o_ex.fe_logical + EXT4_C2B(sbi, ac->ac_o_ex.fe_len); in ext4_mb_normalize_request()
3170 ac->ac_g_ex.fe_len = EXT4_NUM_B2C(sbi, size); in ext4_mb_normalize_request()
3194 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); in ext4_mb_collect_stats() local
3196 if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) { in ext4_mb_collect_stats()
3197 atomic_inc(&sbi->s_bal_reqs); in ext4_mb_collect_stats()
3198 atomic_add(ac->ac_b_ex.fe_len, &sbi->s_bal_allocated); in ext4_mb_collect_stats()
3200 atomic_inc(&sbi->s_bal_success); in ext4_mb_collect_stats()
3201 atomic_add(ac->ac_found, &sbi->s_bal_ex_scanned); in ext4_mb_collect_stats()
3204 atomic_inc(&sbi->s_bal_goals); in ext4_mb_collect_stats()
3205 if (ac->ac_found > sbi->s_mb_max_to_scan) in ext4_mb_collect_stats()
3206 atomic_inc(&sbi->s_bal_breaks); in ext4_mb_collect_stats()
3257 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); in ext4_mb_use_inode_pa() local
3264 end = min(pa->pa_pstart + EXT4_C2B(sbi, pa->pa_len), in ext4_mb_use_inode_pa()
3265 start + EXT4_C2B(sbi, ac->ac_o_ex.fe_len)); in ext4_mb_use_inode_pa()
3266 len = EXT4_NUM_B2C(sbi, end - start); in ext4_mb_use_inode_pa()
3274 BUG_ON(end > pa->pa_pstart + EXT4_C2B(sbi, pa->pa_len)); in ext4_mb_use_inode_pa()
3340 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); in ext4_mb_use_preallocated() local
3359 EXT4_C2B(sbi, pa->pa_len))) in ext4_mb_use_preallocated()
3364 (pa->pa_pstart + EXT4_C2B(sbi, pa->pa_len) > in ext4_mb_use_preallocated()
3565 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mb_new_inode_pa() local
3597 wins = EXT4_C2B(sbi, ac->ac_b_ex.fe_len - ac->ac_o_ex.fe_len); in ext4_mb_new_inode_pa()
3603 EXT4_C2B(sbi, ac->ac_b_ex.fe_len); in ext4_mb_new_inode_pa()
3608 EXT4_NUM_B2C(sbi, win); in ext4_mb_new_inode_pa()
3633 atomic_add(pa->pa_free, &sbi->s_mb_preallocated); in ext4_mb_new_inode_pa()
3737 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mb_release_inode_pa() local
3748 grp_blk_start = pa->pa_pstart - EXT4_C2B(sbi, bit); in ext4_mb_release_inode_pa()
3764 EXT4_C2B(sbi, bit)), in ext4_mb_release_inode_pa()
3782 atomic_add(free, &sbi->s_mb_discarded); in ext4_mb_release_inode_pa()
4100 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); in ext4_mb_group_or_file() local
4110 size = ac->ac_o_ex.fe_logical + EXT4_C2B(sbi, ac->ac_o_ex.fe_len); in ext4_mb_group_or_file()
4115 !ext4_fs_is_busy(sbi) && in ext4_mb_group_or_file()
4121 if (sbi->s_mb_group_prealloc <= 0) { in ext4_mb_group_or_file()
4128 if (size > sbi->s_mb_stream_request) { in ext4_mb_group_or_file()
4139 ac->ac_lg = raw_cpu_ptr(sbi->s_locality_groups); in ext4_mb_group_or_file()
4153 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mb_initialize_context() local
4154 struct ext4_super_block *es = sbi->s_es; in ext4_mb_initialize_context()
4175 ac->ac_b_ex.fe_logical = EXT4_LBLK_CMASK(sbi, ar->logical); in ext4_mb_initialize_context()
4335 struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); in ext4_mb_release_context() local
4341 pa->pa_pstart += EXT4_C2B(sbi, ac->ac_b_ex.fe_len); in ext4_mb_release_context()
4342 pa->pa_lstart += EXT4_C2B(sbi, ac->ac_b_ex.fe_len); in ext4_mb_release_context()
4399 struct ext4_sb_info *sbi; in ext4_mb_new_blocks() local
4407 sbi = EXT4_SB(sb); in ext4_mb_new_blocks()
4421 ext4_claim_free_clusters(sbi, ar->len, ar->flags)) { in ext4_mb_new_blocks()
4434 EXT4_C2B(sbi, ar->len)); in ext4_mb_new_blocks()
4438 EXT4_C2B(sbi, ar->len))) { in ext4_mb_new_blocks()
4524 dquot_free_block(ar->inode, EXT4_C2B(sbi, inquota - ar->len)); in ext4_mb_new_blocks()
4528 percpu_counter_sub(&sbi->s_dirtyclusters_counter, in ext4_mb_new_blocks()
4561 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_mb_free_metadata() local
4591 EXT4_C2B(sbi, cluster), in ext4_mb_free_metadata()
4648 struct ext4_sb_info *sbi; in ext4_free_blocks() local
4662 sbi = EXT4_SB(sb); in ext4_free_blocks()
4664 !ext4_data_block_valid(sbi, block, count)) { in ext4_free_blocks()
4708 overflow = EXT4_PBLK_COFF(sbi, block); in ext4_free_blocks()
4711 overflow = sbi->s_cluster_ratio - overflow; in ext4_free_blocks()
4722 overflow = EXT4_LBLK_COFF(sbi, count); in ext4_free_blocks()
4730 count += sbi->s_cluster_ratio - overflow; in ext4_free_blocks()
4745 if (EXT4_C2B(sbi, bit) + count > EXT4_BLOCKS_PER_GROUP(sb)) { in ext4_free_blocks()
4746 overflow = EXT4_C2B(sbi, bit) + count - in ext4_free_blocks()
4750 count_clusters = EXT4_NUM_B2C(sbi, count); in ext4_free_blocks()
4847 if (sbi->s_log_groups_per_flex) { in ext4_free_blocks()
4848 ext4_group_t flex_group = ext4_flex_group(sbi, block_group); in ext4_free_blocks()
4850 &sbi->s_flex_groups[flex_group].free_clusters); in ext4_free_blocks()
4854 dquot_free_block(inode, EXT4_C2B(sbi, count_clusters)); in ext4_free_blocks()
4855 percpu_counter_add(&sbi->s_freeclusters_counter, count_clusters); in ext4_free_blocks()
4899 struct ext4_sb_info *sbi = EXT4_SB(sb); in ext4_group_add_blocks() local
4935 in_range(block, ext4_inode_table(sb, desc), sbi->s_itb_per_group) || in ext4_group_add_blocks()
4937 sbi->s_itb_per_group)) { in ext4_group_add_blocks()
4988 percpu_counter_add(&sbi->s_freeclusters_counter, in ext4_group_add_blocks()
4989 EXT4_NUM_B2C(sbi, blocks_freed)); in ext4_group_add_blocks()
4991 if (sbi->s_log_groups_per_flex) { in ext4_group_add_blocks()
4992 ext4_group_t flex_group = ext4_flex_group(sbi, block_group); in ext4_group_add_blocks()
4993 atomic64_add(EXT4_NUM_B2C(sbi, blocks_freed), in ext4_group_add_blocks()
4994 &sbi->s_flex_groups[flex_group].free_clusters); in ext4_group_add_blocks()