Lines Matching refs:e4b

451 static void *mb_find_buddy(struct ext4_buddy *e4b, int order, int *max)  in mb_find_buddy()  argument
455 BUG_ON(e4b->bd_bitmap == e4b->bd_buddy); in mb_find_buddy()
458 if (order > e4b->bd_blkbits + 1) { in mb_find_buddy()
465 *max = 1 << (e4b->bd_blkbits + 3); in mb_find_buddy()
466 return e4b->bd_bitmap; in mb_find_buddy()
469 bb = e4b->bd_buddy + EXT4_SB(e4b->bd_sb)->s_mb_offsets[order]; in mb_find_buddy()
470 *max = EXT4_SB(e4b->bd_sb)->s_mb_maxs[order]; in mb_find_buddy()
476 static void mb_free_blocks_double(struct inode *inode, struct ext4_buddy *e4b, in mb_free_blocks_double() argument
480 struct super_block *sb = e4b->bd_sb; in mb_free_blocks_double()
482 if (unlikely(e4b->bd_info->bb_bitmap == NULL)) in mb_free_blocks_double()
484 assert_spin_locked(ext4_group_lock_ptr(sb, e4b->bd_group)); in mb_free_blocks_double()
486 if (!mb_test_bit(first + i, e4b->bd_info->bb_bitmap)) { in mb_free_blocks_double()
489 blocknr = ext4_group_first_block_no(sb, e4b->bd_group); in mb_free_blocks_double()
491 ext4_grp_locked_error(sb, e4b->bd_group, in mb_free_blocks_double()
497 ext4_mark_group_bitmap_corrupted(sb, e4b->bd_group, in mb_free_blocks_double()
500 mb_clear_bit(first + i, e4b->bd_info->bb_bitmap); in mb_free_blocks_double()
504 static void mb_mark_used_double(struct ext4_buddy *e4b, int first, int count) in mb_mark_used_double() argument
508 if (unlikely(e4b->bd_info->bb_bitmap == NULL)) in mb_mark_used_double()
510 assert_spin_locked(ext4_group_lock_ptr(e4b->bd_sb, e4b->bd_group)); in mb_mark_used_double()
512 BUG_ON(mb_test_bit(first + i, e4b->bd_info->bb_bitmap)); in mb_mark_used_double()
513 mb_set_bit(first + i, e4b->bd_info->bb_bitmap); in mb_mark_used_double()
517 static void mb_cmp_bitmaps(struct ext4_buddy *e4b, void *bitmap) in mb_cmp_bitmaps() argument
519 if (unlikely(e4b->bd_info->bb_bitmap == NULL)) in mb_cmp_bitmaps()
521 if (memcmp(e4b->bd_info->bb_bitmap, bitmap, e4b->bd_sb->s_blocksize)) { in mb_cmp_bitmaps()
524 b1 = (unsigned char *) e4b->bd_info->bb_bitmap; in mb_cmp_bitmaps()
526 for (i = 0; i < e4b->bd_sb->s_blocksize; i++) { in mb_cmp_bitmaps()
528 ext4_msg(e4b->bd_sb, KERN_ERR, in mb_cmp_bitmaps()
532 e4b->bd_group, i, i * 8, b1[i], b2[i]); in mb_cmp_bitmaps()
566 struct ext4_buddy *e4b, int first, int count) in mb_free_blocks_double() argument
570 static inline void mb_mark_used_double(struct ext4_buddy *e4b, in mb_mark_used_double() argument
575 static inline void mb_cmp_bitmaps(struct ext4_buddy *e4b, void *bitmap) in mb_cmp_bitmaps() argument
604 static int __mb_check_buddy(struct ext4_buddy *e4b, char *file, in __mb_check_buddy() argument
607 struct super_block *sb = e4b->bd_sb; in __mb_check_buddy()
608 int order = e4b->bd_blkbits + 1; in __mb_check_buddy()
622 if (e4b->bd_info->bb_check_counter++ % 10) in __mb_check_buddy()
626 buddy = mb_find_buddy(e4b, order, &max); in __mb_check_buddy()
628 buddy2 = mb_find_buddy(e4b, order - 1, &max2); in __mb_check_buddy()
655 !mb_test_bit(k, e4b->bd_bitmap)); in __mb_check_buddy()
659 MB_CHECK_ASSERT(e4b->bd_info->bb_counters[order] == count); in __mb_check_buddy()
664 buddy = mb_find_buddy(e4b, 0, &max); in __mb_check_buddy()
667 MB_CHECK_ASSERT(i >= e4b->bd_info->bb_first_free); in __mb_check_buddy()
676 for (j = 0; j < e4b->bd_blkbits + 1; j++) { in __mb_check_buddy()
677 buddy2 = mb_find_buddy(e4b, j, &max2); in __mb_check_buddy()
683 MB_CHECK_ASSERT(!EXT4_MB_GRP_NEED_INIT(e4b->bd_info)); in __mb_check_buddy()
684 MB_CHECK_ASSERT(e4b->bd_info->bb_fragments == fragments); in __mb_check_buddy()
686 grp = ext4_get_group_info(sb, e4b->bd_group); in __mb_check_buddy()
692 MB_CHECK_ASSERT(groupnr == e4b->bd_group); in __mb_check_buddy()
699 #define mb_check_buddy(e4b) __mb_check_buddy(e4b, \ argument
702 #define mb_check_buddy(e4b) argument
825 static void mb_regenerate_buddy(struct ext4_buddy *e4b) in mb_regenerate_buddy() argument
831 while ((buddy = mb_find_buddy(e4b, order++, &count))) { in mb_regenerate_buddy()
834 e4b->bd_info->bb_fragments = 0; in mb_regenerate_buddy()
835 memset(e4b->bd_info->bb_counters, 0, in mb_regenerate_buddy()
836 sizeof(*e4b->bd_info->bb_counters) * in mb_regenerate_buddy()
837 (e4b->bd_sb->s_blocksize_bits + 2)); in mb_regenerate_buddy()
839 ext4_mb_generate_buddy(e4b->bd_sb, e4b->bd_buddy, in mb_regenerate_buddy()
840 e4b->bd_bitmap, e4b->bd_group); in mb_regenerate_buddy()
1031 ext4_group_t group, struct ext4_buddy *e4b, gfp_t gfp) in ext4_mb_get_buddy_page_lock() argument
1038 e4b->bd_buddy_page = NULL; in ext4_mb_get_buddy_page_lock()
1039 e4b->bd_bitmap_page = NULL; in ext4_mb_get_buddy_page_lock()
1054 e4b->bd_bitmap_page = page; in ext4_mb_get_buddy_page_lock()
1055 e4b->bd_bitmap = page_address(page) + (poff * sb->s_blocksize); in ext4_mb_get_buddy_page_lock()
1068 e4b->bd_buddy_page = page; in ext4_mb_get_buddy_page_lock()
1072 static void ext4_mb_put_buddy_page_lock(struct ext4_buddy *e4b) in ext4_mb_put_buddy_page_lock() argument
1074 if (e4b->bd_bitmap_page) { in ext4_mb_put_buddy_page_lock()
1075 unlock_page(e4b->bd_bitmap_page); in ext4_mb_put_buddy_page_lock()
1076 put_page(e4b->bd_bitmap_page); in ext4_mb_put_buddy_page_lock()
1078 if (e4b->bd_buddy_page) { in ext4_mb_put_buddy_page_lock()
1079 unlock_page(e4b->bd_buddy_page); in ext4_mb_put_buddy_page_lock()
1080 put_page(e4b->bd_buddy_page); in ext4_mb_put_buddy_page_lock()
1094 struct ext4_buddy e4b; in ext4_mb_init_group() local
1110 ret = ext4_mb_get_buddy_page_lock(sb, group, &e4b, gfp); in ext4_mb_init_group()
1119 page = e4b.bd_bitmap_page; in ext4_mb_init_group()
1128 if (e4b.bd_buddy_page == NULL) { in ext4_mb_init_group()
1138 page = e4b.bd_buddy_page; in ext4_mb_init_group()
1139 ret = ext4_mb_init_cache(page, e4b.bd_bitmap, gfp); in ext4_mb_init_group()
1147 ext4_mb_put_buddy_page_lock(&e4b); in ext4_mb_init_group()
1158 struct ext4_buddy *e4b, gfp_t gfp) in ext4_mb_load_buddy_gfp() argument
1176 e4b->bd_blkbits = sb->s_blocksize_bits; in ext4_mb_load_buddy_gfp()
1177 e4b->bd_info = grp; in ext4_mb_load_buddy_gfp()
1178 e4b->bd_sb = sb; in ext4_mb_load_buddy_gfp()
1179 e4b->bd_group = group; in ext4_mb_load_buddy_gfp()
1180 e4b->bd_buddy_page = NULL; in ext4_mb_load_buddy_gfp()
1181 e4b->bd_bitmap_page = NULL; in ext4_mb_load_buddy_gfp()
1225 mb_cmp_bitmaps(e4b, page_address(page) + in ext4_mb_load_buddy_gfp()
1241 e4b->bd_bitmap_page = page; in ext4_mb_load_buddy_gfp()
1242 e4b->bd_bitmap = page_address(page) + (poff * sb->s_blocksize); in ext4_mb_load_buddy_gfp()
1256 ret = ext4_mb_init_cache(page, e4b->bd_bitmap, in ext4_mb_load_buddy_gfp()
1276 e4b->bd_buddy_page = page; in ext4_mb_load_buddy_gfp()
1277 e4b->bd_buddy = page_address(page) + (poff * sb->s_blocksize); in ext4_mb_load_buddy_gfp()
1284 if (e4b->bd_bitmap_page) in ext4_mb_load_buddy_gfp()
1285 put_page(e4b->bd_bitmap_page); in ext4_mb_load_buddy_gfp()
1286 if (e4b->bd_buddy_page) in ext4_mb_load_buddy_gfp()
1287 put_page(e4b->bd_buddy_page); in ext4_mb_load_buddy_gfp()
1288 e4b->bd_buddy = NULL; in ext4_mb_load_buddy_gfp()
1289 e4b->bd_bitmap = NULL; in ext4_mb_load_buddy_gfp()
1294 struct ext4_buddy *e4b) in ext4_mb_load_buddy() argument
1296 return ext4_mb_load_buddy_gfp(sb, group, e4b, GFP_NOFS); in ext4_mb_load_buddy()
1299 static void ext4_mb_unload_buddy(struct ext4_buddy *e4b) in ext4_mb_unload_buddy() argument
1301 if (e4b->bd_bitmap_page) in ext4_mb_unload_buddy()
1302 put_page(e4b->bd_bitmap_page); in ext4_mb_unload_buddy()
1303 if (e4b->bd_buddy_page) in ext4_mb_unload_buddy()
1304 put_page(e4b->bd_buddy_page); in ext4_mb_unload_buddy()
1308 static int mb_find_order_for_block(struct ext4_buddy *e4b, int block) in mb_find_order_for_block() argument
1311 int bb_incr = 1 << (e4b->bd_blkbits - 1); in mb_find_order_for_block()
1314 BUG_ON(e4b->bd_bitmap == e4b->bd_buddy); in mb_find_order_for_block()
1315 BUG_ON(block >= (1 << (e4b->bd_blkbits + 3))); in mb_find_order_for_block()
1317 bb = e4b->bd_buddy; in mb_find_order_for_block()
1318 while (order <= e4b->bd_blkbits + 1) { in mb_find_order_for_block()
1408 static void mb_buddy_mark_free(struct ext4_buddy *e4b, int first, int last) in mb_buddy_mark_free() argument
1412 void *buddy = mb_find_buddy(e4b, order, &max); in mb_buddy_mark_free()
1447 e4b->bd_info->bb_counters[order] += mb_buddy_adjust_border(&first, buddy, -1); in mb_buddy_mark_free()
1449 e4b->bd_info->bb_counters[order] += mb_buddy_adjust_border(&last, buddy, 1); in mb_buddy_mark_free()
1454 if (first == last || !(buddy2 = mb_find_buddy(e4b, order, &max))) { in mb_buddy_mark_free()
1456 e4b->bd_info->bb_counters[order - 1] += last - first + 1; in mb_buddy_mark_free()
1465 static void mb_free_blocks(struct inode *inode, struct ext4_buddy *e4b, in mb_free_blocks() argument
1472 struct super_block *sb = e4b->bd_sb; in mb_free_blocks()
1477 assert_spin_locked(ext4_group_lock_ptr(sb, e4b->bd_group)); in mb_free_blocks()
1479 if (unlikely(EXT4_MB_GRP_BBITMAP_CORRUPT(e4b->bd_info))) in mb_free_blocks()
1482 mb_check_buddy(e4b); in mb_free_blocks()
1483 mb_free_blocks_double(inode, e4b, first, count); in mb_free_blocks()
1486 e4b->bd_info->bb_free += count; in mb_free_blocks()
1487 if (first < e4b->bd_info->bb_first_free) in mb_free_blocks()
1488 e4b->bd_info->bb_first_free = first; in mb_free_blocks()
1494 left_is_free = !mb_test_bit(first - 1, e4b->bd_bitmap); in mb_free_blocks()
1495 block = mb_test_and_clear_bits(e4b->bd_bitmap, first, count); in mb_free_blocks()
1497 right_is_free = !mb_test_bit(last + 1, e4b->bd_bitmap); in mb_free_blocks()
1503 blocknr = ext4_group_first_block_no(sb, e4b->bd_group); in mb_free_blocks()
1506 ext4_grp_locked_error(sb, e4b->bd_group, in mb_free_blocks()
1512 sb, e4b->bd_group, in mb_free_blocks()
1515 mb_regenerate_buddy(e4b); in mb_free_blocks()
1521 e4b->bd_info->bb_fragments--; in mb_free_blocks()
1523 e4b->bd_info->bb_fragments++; in mb_free_blocks()
1533 e4b->bd_info->bb_counters[0] += left_is_free ? -1 : 1; in mb_free_blocks()
1537 e4b->bd_info->bb_counters[0] += right_is_free ? -1 : 1; in mb_free_blocks()
1541 mb_buddy_mark_free(e4b, first >> 1, last >> 1); in mb_free_blocks()
1544 mb_set_largest_free_order(sb, e4b->bd_info); in mb_free_blocks()
1545 mb_check_buddy(e4b); in mb_free_blocks()
1548 static int mb_find_extent(struct ext4_buddy *e4b, int block, in mb_find_extent() argument
1555 assert_spin_locked(ext4_group_lock_ptr(e4b->bd_sb, e4b->bd_group)); in mb_find_extent()
1558 buddy = mb_find_buddy(e4b, 0, &max); in mb_find_extent()
1569 order = mb_find_order_for_block(e4b, block); in mb_find_extent()
1574 ex->fe_group = e4b->bd_group; in mb_find_extent()
1582 mb_find_buddy(e4b, order, &max)) { in mb_find_extent()
1588 if (mb_test_bit(next, e4b->bd_bitmap)) in mb_find_extent()
1591 order = mb_find_order_for_block(e4b, next); in mb_find_extent()
1597 if (ex->fe_start + ex->fe_len > EXT4_CLUSTERS_PER_GROUP(e4b->bd_sb)) { in mb_find_extent()
1600 ext4_grp_locked_error(e4b->bd_sb, e4b->bd_group, 0, 0, in mb_find_extent()
1612 static int mb_mark_used(struct ext4_buddy *e4b, struct ext4_free_extent *ex) in mb_mark_used() argument
1624 BUG_ON(start + len > (e4b->bd_sb->s_blocksize << 3)); in mb_mark_used()
1625 BUG_ON(e4b->bd_group != ex->fe_group); in mb_mark_used()
1626 assert_spin_locked(ext4_group_lock_ptr(e4b->bd_sb, e4b->bd_group)); in mb_mark_used()
1627 mb_check_buddy(e4b); in mb_mark_used()
1628 mb_mark_used_double(e4b, start, len); in mb_mark_used()
1631 e4b->bd_info->bb_free -= len; in mb_mark_used()
1632 if (e4b->bd_info->bb_first_free == start) in mb_mark_used()
1633 e4b->bd_info->bb_first_free += len; in mb_mark_used()
1637 mlen = !mb_test_bit(start - 1, e4b->bd_bitmap); in mb_mark_used()
1638 if (start + len < EXT4_SB(e4b->bd_sb)->s_mb_maxs[0]) in mb_mark_used()
1639 max = !mb_test_bit(start + len, e4b->bd_bitmap); in mb_mark_used()
1641 e4b->bd_info->bb_fragments++; in mb_mark_used()
1643 e4b->bd_info->bb_fragments--; in mb_mark_used()
1647 ord = mb_find_order_for_block(e4b, start); in mb_mark_used()
1652 buddy = mb_find_buddy(e4b, ord, &max); in mb_mark_used()
1655 e4b->bd_info->bb_counters[ord]--; in mb_mark_used()
1668 buddy = mb_find_buddy(e4b, ord, &max); in mb_mark_used()
1670 e4b->bd_info->bb_counters[ord]--; in mb_mark_used()
1674 buddy = mb_find_buddy(e4b, ord, &max); in mb_mark_used()
1677 e4b->bd_info->bb_counters[ord]++; in mb_mark_used()
1678 e4b->bd_info->bb_counters[ord]++; in mb_mark_used()
1680 mb_set_largest_free_order(e4b->bd_sb, e4b->bd_info); in mb_mark_used()
1682 ext4_set_bits(e4b->bd_bitmap, ex->fe_start, len0); in mb_mark_used()
1683 mb_check_buddy(e4b); in mb_mark_used()
1692 struct ext4_buddy *e4b) in ext4_mb_use_best_found() argument
1697 BUG_ON(ac->ac_b_ex.fe_group != e4b->bd_group); in ext4_mb_use_best_found()
1702 ret = mb_mark_used(e4b, &ac->ac_b_ex); in ext4_mb_use_best_found()
1719 ac->ac_bitmap_page = e4b->bd_bitmap_page; in ext4_mb_use_best_found()
1721 ac->ac_buddy_page = e4b->bd_buddy_page; in ext4_mb_use_best_found()
1741 struct ext4_buddy *e4b, in ext4_mb_check_limits() argument
1768 && bex->fe_group == e4b->bd_group) { in ext4_mb_check_limits()
1772 max = mb_find_extent(e4b, bex->fe_start, gex->fe_len, &ex); in ext4_mb_check_limits()
1774 ext4_mb_use_best_found(ac, e4b); in ext4_mb_check_limits()
1792 struct ext4_buddy *e4b) in ext4_mb_measure_extent() argument
1809 ext4_mb_use_best_found(ac, e4b); in ext4_mb_measure_extent()
1818 ext4_mb_use_best_found(ac, e4b); in ext4_mb_measure_extent()
1846 ext4_mb_check_limits(ac, e4b, 0); in ext4_mb_measure_extent()
1851 struct ext4_buddy *e4b) in ext4_mb_try_best_found() argument
1859 err = ext4_mb_load_buddy(ac->ac_sb, group, e4b); in ext4_mb_try_best_found()
1864 max = mb_find_extent(e4b, ex.fe_start, ex.fe_len, &ex); in ext4_mb_try_best_found()
1868 ext4_mb_use_best_found(ac, e4b); in ext4_mb_try_best_found()
1872 ext4_mb_unload_buddy(e4b); in ext4_mb_try_best_found()
1879 struct ext4_buddy *e4b) in ext4_mb_find_by_goal() argument
1893 err = ext4_mb_load_buddy(ac->ac_sb, group, e4b); in ext4_mb_find_by_goal()
1897 if (unlikely(EXT4_MB_GRP_BBITMAP_CORRUPT(e4b->bd_info))) { in ext4_mb_find_by_goal()
1898 ext4_mb_unload_buddy(e4b); in ext4_mb_find_by_goal()
1903 max = mb_find_extent(e4b, ac->ac_g_ex.fe_start, in ext4_mb_find_by_goal()
1910 start = ext4_group_first_block_no(ac->ac_sb, e4b->bd_group) + in ext4_mb_find_by_goal()
1916 ext4_mb_use_best_found(ac, e4b); in ext4_mb_find_by_goal()
1924 ext4_mb_use_best_found(ac, e4b); in ext4_mb_find_by_goal()
1933 ext4_mb_use_best_found(ac, e4b); in ext4_mb_find_by_goal()
1936 ext4_mb_unload_buddy(e4b); in ext4_mb_find_by_goal()
1947 struct ext4_buddy *e4b) in ext4_mb_simple_scan_group() argument
1950 struct ext4_group_info *grp = e4b->bd_info; in ext4_mb_simple_scan_group()
1961 buddy = mb_find_buddy(e4b, i, &max); in ext4_mb_simple_scan_group()
1966 ext4_grp_locked_error(ac->ac_sb, e4b->bd_group, 0, 0, in ext4_mb_simple_scan_group()
1970 e4b->bd_group, in ext4_mb_simple_scan_group()
1978 ac->ac_b_ex.fe_group = e4b->bd_group; in ext4_mb_simple_scan_group()
1980 ext4_mb_use_best_found(ac, e4b); in ext4_mb_simple_scan_group()
1998 struct ext4_buddy *e4b) in ext4_mb_complex_scan_group() argument
2001 void *bitmap = e4b->bd_bitmap; in ext4_mb_complex_scan_group()
2006 free = e4b->bd_info->bb_free; in ext4_mb_complex_scan_group()
2010 i = e4b->bd_info->bb_first_free; in ext4_mb_complex_scan_group()
2021 ext4_grp_locked_error(sb, e4b->bd_group, 0, 0, in ext4_mb_complex_scan_group()
2025 ext4_mark_group_bitmap_corrupted(sb, e4b->bd_group, in ext4_mb_complex_scan_group()
2030 mb_find_extent(e4b, i, ac->ac_g_ex.fe_len, &ex); in ext4_mb_complex_scan_group()
2034 ext4_grp_locked_error(sb, e4b->bd_group, 0, 0, in ext4_mb_complex_scan_group()
2038 ext4_mark_group_bitmap_corrupted(sb, e4b->bd_group, in ext4_mb_complex_scan_group()
2048 ext4_mb_measure_extent(ac, &ex, e4b); in ext4_mb_complex_scan_group()
2054 ext4_mb_check_limits(ac, e4b, 1); in ext4_mb_complex_scan_group()
2063 struct ext4_buddy *e4b) in ext4_mb_scan_aligned() argument
2067 void *bitmap = e4b->bd_bitmap; in ext4_mb_scan_aligned()
2077 first_group_block = ext4_group_first_block_no(sb, e4b->bd_group); in ext4_mb_scan_aligned()
2085 max = mb_find_extent(e4b, i, sbi->s_stripe, &ex); in ext4_mb_scan_aligned()
2090 ext4_mb_use_best_found(ac, e4b); in ext4_mb_scan_aligned()
2308 struct ext4_buddy e4b; in ext4_mb_regular_allocator() local
2321 err = ext4_mb_find_by_goal(ac, &e4b); in ext4_mb_regular_allocator()
2417 err = ext4_mb_load_buddy(sb, group, &e4b); in ext4_mb_regular_allocator()
2430 ext4_mb_unload_buddy(&e4b); in ext4_mb_regular_allocator()
2436 ext4_mb_simple_scan_group(ac, &e4b); in ext4_mb_regular_allocator()
2439 ext4_mb_scan_aligned(ac, &e4b); in ext4_mb_regular_allocator()
2441 ext4_mb_complex_scan_group(ac, &e4b); in ext4_mb_regular_allocator()
2444 ext4_mb_unload_buddy(&e4b); in ext4_mb_regular_allocator()
2457 ext4_mb_try_best_found(ac, &e4b); in ext4_mb_regular_allocator()
2521 struct ext4_buddy e4b; in ext4_mb_seq_groups_show() local
2543 err = ext4_mb_load_buddy(sb, group, &e4b); in ext4_mb_seq_groups_show()
2554 ext4_mb_unload_buddy(&e4b); in ext4_mb_seq_groups_show()
3050 struct ext4_buddy e4b; in ext4_free_data_in_buddy() local
3057 err = ext4_mb_load_buddy(sb, entry->efd_group, &e4b); in ext4_free_data_in_buddy()
3065 db = e4b.bd_info; in ext4_free_data_in_buddy()
3072 mb_free_blocks(NULL, &e4b, entry->efd_start_cluster, entry->efd_count); in ext4_free_data_in_buddy()
3087 put_page(e4b.bd_buddy_page); in ext4_free_data_in_buddy()
3088 put_page(e4b.bd_bitmap_page); in ext4_free_data_in_buddy()
3092 ext4_mb_unload_buddy(&e4b); in ext4_free_data_in_buddy()
3673 struct ext4_buddy e4b; in ext4_discard_allocated_blocks() local
3679 err = ext4_mb_load_buddy(ac->ac_sb, ac->ac_f_ex.fe_group, &e4b); in ext4_discard_allocated_blocks()
3690 mb_free_blocks(ac->ac_inode, &e4b, ac->ac_f_ex.fe_start, in ext4_discard_allocated_blocks()
3693 ext4_mb_unload_buddy(&e4b); in ext4_discard_allocated_blocks()
4189 ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh, in ext4_mb_release_inode_pa() argument
4192 struct super_block *sb = e4b->bd_sb; in ext4_mb_release_inode_pa()
4204 BUG_ON(group != e4b->bd_group && pa->pa_len != 0); in ext4_mb_release_inode_pa()
4221 mb_free_blocks(pa->pa_inode, e4b, bit, next - bit); in ext4_mb_release_inode_pa()
4225 ext4_msg(e4b->bd_sb, KERN_CRIT, in ext4_mb_release_inode_pa()
4243 ext4_mb_release_group_pa(struct ext4_buddy *e4b, in ext4_mb_release_group_pa() argument
4246 struct super_block *sb = e4b->bd_sb; in ext4_mb_release_group_pa()
4253 BUG_ON(group != e4b->bd_group && pa->pa_len != 0); in ext4_mb_release_group_pa()
4254 mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len); in ext4_mb_release_group_pa()
4278 struct ext4_buddy e4b; in ext4_mb_discard_group_preallocations() local
4295 err = ext4_mb_load_buddy(sb, group, &e4b); in ext4_mb_discard_group_preallocations()
4342 ext4_mb_release_group_pa(&e4b, pa); in ext4_mb_discard_group_preallocations()
4344 ext4_mb_release_inode_pa(&e4b, bitmap_bh, pa); in ext4_mb_discard_group_preallocations()
4351 ext4_mb_unload_buddy(&e4b); in ext4_mb_discard_group_preallocations()
4376 struct ext4_buddy e4b; in ext4_discard_preallocations() local
4451 err = ext4_mb_load_buddy_gfp(sb, group, &e4b, in ext4_discard_preallocations()
4464 ext4_mb_unload_buddy(&e4b); in ext4_discard_preallocations()
4470 ext4_mb_release_inode_pa(&e4b, bitmap_bh, pa); in ext4_discard_preallocations()
4473 ext4_mb_unload_buddy(&e4b); in ext4_discard_preallocations()
4693 struct ext4_buddy e4b; in ext4_mb_discard_lg_preallocations() local
4746 err = ext4_mb_load_buddy_gfp(sb, group, &e4b, in ext4_mb_discard_lg_preallocations()
4755 ext4_mb_release_group_pa(&e4b, pa); in ext4_mb_discard_lg_preallocations()
4758 ext4_mb_unload_buddy(&e4b); in ext4_mb_discard_lg_preallocations()
5130 ext4_mb_free_metadata(handle_t *handle, struct ext4_buddy *e4b, in ext4_mb_free_metadata() argument
5133 ext4_group_t group = e4b->bd_group; in ext4_mb_free_metadata()
5137 struct ext4_group_info *db = e4b->bd_info; in ext4_mb_free_metadata()
5138 struct super_block *sb = e4b->bd_sb; in ext4_mb_free_metadata()
5144 BUG_ON(e4b->bd_bitmap_page == NULL); in ext4_mb_free_metadata()
5145 BUG_ON(e4b->bd_buddy_page == NULL); in ext4_mb_free_metadata()
5156 get_page(e4b->bd_buddy_page); in ext4_mb_free_metadata()
5157 get_page(e4b->bd_bitmap_page); in ext4_mb_free_metadata()
5326 struct ext4_buddy e4b; in ext4_free_blocks() local
5474 err = ext4_mb_load_buddy_gfp(sb, block_group, &e4b, in ext4_free_blocks()
5502 ext4_mb_free_metadata(handle, &e4b, new_entry); in ext4_free_blocks()
5517 EXT4_MB_GRP_CLEAR_TRIMMED(e4b.bd_info); in ext4_free_blocks()
5521 mb_free_blocks(inode, &e4b, bit, count_clusters); in ext4_free_blocks()
5549 ext4_mb_unload_buddy(&e4b); in ext4_free_blocks()
5592 struct ext4_buddy e4b; in ext4_group_add_blocks() local
5667 err = ext4_mb_load_buddy(sb, block_group, &e4b); in ext4_group_add_blocks()
5678 mb_free_blocks(NULL, &e4b, bit, cluster_count); in ext4_group_add_blocks()
5695 ext4_mb_unload_buddy(&e4b); in ext4_group_add_blocks()
5726 ext4_group_t group, struct ext4_buddy *e4b) in ext4_trim_extent() argument
5745 mb_mark_used(e4b, &ex); in ext4_trim_extent()
5749 mb_free_blocks(NULL, e4b, start, ex.fe_len); in ext4_trim_extent()
5778 struct ext4_buddy e4b; in ext4_trim_all_free() local
5783 ret = ext4_mb_load_buddy(sb, group, &e4b); in ext4_trim_all_free()
5789 bitmap = e4b.bd_bitmap; in ext4_trim_all_free()
5792 if (EXT4_MB_GRP_WAS_TRIMMED(e4b.bd_info) && in ext4_trim_all_free()
5796 start = (e4b.bd_info->bb_first_free > start) ? in ext4_trim_all_free()
5797 e4b.bd_info->bb_first_free : start; in ext4_trim_all_free()
5807 next - start, group, &e4b); in ext4_trim_all_free()
5827 if ((e4b.bd_info->bb_free - free_count) < minblocks) in ext4_trim_all_free()
5833 EXT4_MB_GRP_SET_TRIMMED(e4b.bd_info); in ext4_trim_all_free()
5837 ext4_mb_unload_buddy(&e4b); in ext4_trim_all_free()
5956 struct ext4_buddy e4b; in ext4_mballoc_query_range() local
5959 error = ext4_mb_load_buddy(sb, group, &e4b); in ext4_mballoc_query_range()
5962 bitmap = e4b.bd_bitmap; in ext4_mballoc_query_range()
5966 start = (e4b.bd_info->bb_first_free > start) ? in ext4_mballoc_query_range()
5967 e4b.bd_info->bb_first_free : start; in ext4_mballoc_query_range()
5988 ext4_mb_unload_buddy(&e4b); in ext4_mballoc_query_range()