e4b               428 fs/ext4/mballoc.c static void *mb_find_buddy(struct ext4_buddy *e4b, int order, int *max)
e4b               432 fs/ext4/mballoc.c 	BUG_ON(e4b->bd_bitmap == e4b->bd_buddy);
e4b               435 fs/ext4/mballoc.c 	if (order > e4b->bd_blkbits + 1) {
e4b               442 fs/ext4/mballoc.c 		*max = 1 << (e4b->bd_blkbits + 3);
e4b               443 fs/ext4/mballoc.c 		return e4b->bd_bitmap;
e4b               446 fs/ext4/mballoc.c 	bb = e4b->bd_buddy + EXT4_SB(e4b->bd_sb)->s_mb_offsets[order];
e4b               447 fs/ext4/mballoc.c 	*max = EXT4_SB(e4b->bd_sb)->s_mb_maxs[order];
e4b               453 fs/ext4/mballoc.c static void mb_free_blocks_double(struct inode *inode, struct ext4_buddy *e4b,
e4b               457 fs/ext4/mballoc.c 	struct super_block *sb = e4b->bd_sb;
e4b               459 fs/ext4/mballoc.c 	if (unlikely(e4b->bd_info->bb_bitmap == NULL))
e4b               461 fs/ext4/mballoc.c 	assert_spin_locked(ext4_group_lock_ptr(sb, e4b->bd_group));
e4b               463 fs/ext4/mballoc.c 		if (!mb_test_bit(first + i, e4b->bd_info->bb_bitmap)) {
e4b               466 fs/ext4/mballoc.c 			blocknr = ext4_group_first_block_no(sb, e4b->bd_group);
e4b               468 fs/ext4/mballoc.c 			ext4_grp_locked_error(sb, e4b->bd_group,
e4b               474 fs/ext4/mballoc.c 			ext4_mark_group_bitmap_corrupted(sb, e4b->bd_group,
e4b               477 fs/ext4/mballoc.c 		mb_clear_bit(first + i, e4b->bd_info->bb_bitmap);
e4b               481 fs/ext4/mballoc.c static void mb_mark_used_double(struct ext4_buddy *e4b, int first, int count)
e4b               485 fs/ext4/mballoc.c 	if (unlikely(e4b->bd_info->bb_bitmap == NULL))
e4b               487 fs/ext4/mballoc.c 	assert_spin_locked(ext4_group_lock_ptr(e4b->bd_sb, e4b->bd_group));
e4b               489 fs/ext4/mballoc.c 		BUG_ON(mb_test_bit(first + i, e4b->bd_info->bb_bitmap));
e4b               490 fs/ext4/mballoc.c 		mb_set_bit(first + i, e4b->bd_info->bb_bitmap);
e4b               494 fs/ext4/mballoc.c static void mb_cmp_bitmaps(struct ext4_buddy *e4b, void *bitmap)
e4b               496 fs/ext4/mballoc.c 	if (memcmp(e4b->bd_info->bb_bitmap, bitmap, e4b->bd_sb->s_blocksize)) {
e4b               499 fs/ext4/mballoc.c 		b1 = (unsigned char *) e4b->bd_info->bb_bitmap;
e4b               501 fs/ext4/mballoc.c 		for (i = 0; i < e4b->bd_sb->s_blocksize; i++) {
e4b               503 fs/ext4/mballoc.c 				ext4_msg(e4b->bd_sb, KERN_ERR,
e4b               507 fs/ext4/mballoc.c 					 e4b->bd_group, i, i * 8, b1[i], b2[i]);
e4b               516 fs/ext4/mballoc.c 				struct ext4_buddy *e4b, int first, int count)
e4b               520 fs/ext4/mballoc.c static inline void mb_mark_used_double(struct ext4_buddy *e4b,
e4b               525 fs/ext4/mballoc.c static inline void mb_cmp_bitmaps(struct ext4_buddy *e4b, void *bitmap)
e4b               543 fs/ext4/mballoc.c static int __mb_check_buddy(struct ext4_buddy *e4b, char *file,
e4b               546 fs/ext4/mballoc.c 	struct super_block *sb = e4b->bd_sb;
e4b               547 fs/ext4/mballoc.c 	int order = e4b->bd_blkbits + 1;
e4b               568 fs/ext4/mballoc.c 		buddy = mb_find_buddy(e4b, order, &max);
e4b               570 fs/ext4/mballoc.c 		buddy2 = mb_find_buddy(e4b, order - 1, &max2);
e4b               597 fs/ext4/mballoc.c 					!mb_test_bit(k, e4b->bd_bitmap));
e4b               601 fs/ext4/mballoc.c 		MB_CHECK_ASSERT(e4b->bd_info->bb_counters[order] == count);
e4b               606 fs/ext4/mballoc.c 	buddy = mb_find_buddy(e4b, 0, &max);
e4b               609 fs/ext4/mballoc.c 			MB_CHECK_ASSERT(i >= e4b->bd_info->bb_first_free);
e4b               618 fs/ext4/mballoc.c 		for (j = 0; j < e4b->bd_blkbits + 1; j++) {
e4b               619 fs/ext4/mballoc.c 			buddy2 = mb_find_buddy(e4b, j, &max2);
e4b               625 fs/ext4/mballoc.c 	MB_CHECK_ASSERT(!EXT4_MB_GRP_NEED_INIT(e4b->bd_info));
e4b               626 fs/ext4/mballoc.c 	MB_CHECK_ASSERT(e4b->bd_info->bb_fragments == fragments);
e4b               628 fs/ext4/mballoc.c 	grp = ext4_get_group_info(sb, e4b->bd_group);
e4b               634 fs/ext4/mballoc.c 		MB_CHECK_ASSERT(groupnr == e4b->bd_group);
e4b               641 fs/ext4/mballoc.c #define mb_check_buddy(e4b) __mb_check_buddy(e4b,	\
e4b               644 fs/ext4/mballoc.c #define mb_check_buddy(e4b)
e4b               767 fs/ext4/mballoc.c static void mb_regenerate_buddy(struct ext4_buddy *e4b)
e4b               773 fs/ext4/mballoc.c 	while ((buddy = mb_find_buddy(e4b, order++, &count))) {
e4b               776 fs/ext4/mballoc.c 	e4b->bd_info->bb_fragments = 0;
e4b               777 fs/ext4/mballoc.c 	memset(e4b->bd_info->bb_counters, 0,
e4b               778 fs/ext4/mballoc.c 		sizeof(*e4b->bd_info->bb_counters) *
e4b               779 fs/ext4/mballoc.c 		(e4b->bd_sb->s_blocksize_bits + 2));
e4b               781 fs/ext4/mballoc.c 	ext4_mb_generate_buddy(e4b->bd_sb, e4b->bd_buddy,
e4b               782 fs/ext4/mballoc.c 		e4b->bd_bitmap, e4b->bd_group);
e4b               973 fs/ext4/mballoc.c 		ext4_group_t group, struct ext4_buddy *e4b, gfp_t gfp)
e4b               980 fs/ext4/mballoc.c 	e4b->bd_buddy_page = NULL;
e4b               981 fs/ext4/mballoc.c 	e4b->bd_bitmap_page = NULL;
e4b               996 fs/ext4/mballoc.c 	e4b->bd_bitmap_page = page;
e4b               997 fs/ext4/mballoc.c 	e4b->bd_bitmap = page_address(page) + (poff * sb->s_blocksize);
e4b              1010 fs/ext4/mballoc.c 	e4b->bd_buddy_page = page;
e4b              1014 fs/ext4/mballoc.c static void ext4_mb_put_buddy_page_lock(struct ext4_buddy *e4b)
e4b              1016 fs/ext4/mballoc.c 	if (e4b->bd_bitmap_page) {
e4b              1017 fs/ext4/mballoc.c 		unlock_page(e4b->bd_bitmap_page);
e4b              1018 fs/ext4/mballoc.c 		put_page(e4b->bd_bitmap_page);
e4b              1020 fs/ext4/mballoc.c 	if (e4b->bd_buddy_page) {
e4b              1021 fs/ext4/mballoc.c 		unlock_page(e4b->bd_buddy_page);
e4b              1022 fs/ext4/mballoc.c 		put_page(e4b->bd_buddy_page);
e4b              1036 fs/ext4/mballoc.c 	struct ext4_buddy e4b;
e4b              1052 fs/ext4/mballoc.c 	ret = ext4_mb_get_buddy_page_lock(sb, group, &e4b, gfp);
e4b              1061 fs/ext4/mballoc.c 	page = e4b.bd_bitmap_page;
e4b              1070 fs/ext4/mballoc.c 	if (e4b.bd_buddy_page == NULL) {
e4b              1080 fs/ext4/mballoc.c 	page = e4b.bd_buddy_page;
e4b              1081 fs/ext4/mballoc.c 	ret = ext4_mb_init_cache(page, e4b.bd_bitmap, gfp);
e4b              1089 fs/ext4/mballoc.c 	ext4_mb_put_buddy_page_lock(&e4b);
e4b              1100 fs/ext4/mballoc.c 		       struct ext4_buddy *e4b, gfp_t gfp)
e4b              1118 fs/ext4/mballoc.c 	e4b->bd_blkbits = sb->s_blocksize_bits;
e4b              1119 fs/ext4/mballoc.c 	e4b->bd_info = grp;
e4b              1120 fs/ext4/mballoc.c 	e4b->bd_sb = sb;
e4b              1121 fs/ext4/mballoc.c 	e4b->bd_group = group;
e4b              1122 fs/ext4/mballoc.c 	e4b->bd_buddy_page = NULL;
e4b              1123 fs/ext4/mballoc.c 	e4b->bd_bitmap_page = NULL;
e4b              1167 fs/ext4/mballoc.c 				mb_cmp_bitmaps(e4b, page_address(page) +
e4b              1183 fs/ext4/mballoc.c 	e4b->bd_bitmap_page = page;
e4b              1184 fs/ext4/mballoc.c 	e4b->bd_bitmap = page_address(page) + (poff * sb->s_blocksize);
e4b              1198 fs/ext4/mballoc.c 				ret = ext4_mb_init_cache(page, e4b->bd_bitmap,
e4b              1218 fs/ext4/mballoc.c 	e4b->bd_buddy_page = page;
e4b              1219 fs/ext4/mballoc.c 	e4b->bd_buddy = page_address(page) + (poff * sb->s_blocksize);
e4b              1221 fs/ext4/mballoc.c 	BUG_ON(e4b->bd_bitmap_page == NULL);
e4b              1222 fs/ext4/mballoc.c 	BUG_ON(e4b->bd_buddy_page == NULL);
e4b              1229 fs/ext4/mballoc.c 	if (e4b->bd_bitmap_page)
e4b              1230 fs/ext4/mballoc.c 		put_page(e4b->bd_bitmap_page);
e4b              1231 fs/ext4/mballoc.c 	if (e4b->bd_buddy_page)
e4b              1232 fs/ext4/mballoc.c 		put_page(e4b->bd_buddy_page);
e4b              1233 fs/ext4/mballoc.c 	e4b->bd_buddy = NULL;
e4b              1234 fs/ext4/mballoc.c 	e4b->bd_bitmap = NULL;
e4b              1239 fs/ext4/mballoc.c 			      struct ext4_buddy *e4b)
e4b              1241 fs/ext4/mballoc.c 	return ext4_mb_load_buddy_gfp(sb, group, e4b, GFP_NOFS);
e4b              1244 fs/ext4/mballoc.c static void ext4_mb_unload_buddy(struct ext4_buddy *e4b)
e4b              1246 fs/ext4/mballoc.c 	if (e4b->bd_bitmap_page)
e4b              1247 fs/ext4/mballoc.c 		put_page(e4b->bd_bitmap_page);
e4b              1248 fs/ext4/mballoc.c 	if (e4b->bd_buddy_page)
e4b              1249 fs/ext4/mballoc.c 		put_page(e4b->bd_buddy_page);
e4b              1253 fs/ext4/mballoc.c static int mb_find_order_for_block(struct ext4_buddy *e4b, int block)
e4b              1256 fs/ext4/mballoc.c 	int bb_incr = 1 << (e4b->bd_blkbits - 1);
e4b              1259 fs/ext4/mballoc.c 	BUG_ON(e4b->bd_bitmap == e4b->bd_buddy);
e4b              1260 fs/ext4/mballoc.c 	BUG_ON(block >= (1 << (e4b->bd_blkbits + 3)));
e4b              1262 fs/ext4/mballoc.c 	bb = e4b->bd_buddy;
e4b              1263 fs/ext4/mballoc.c 	while (order <= e4b->bd_blkbits + 1) {
e4b              1356 fs/ext4/mballoc.c static void mb_buddy_mark_free(struct ext4_buddy *e4b, int first, int last)
e4b              1360 fs/ext4/mballoc.c 	void *buddy = mb_find_buddy(e4b, order, &max);
e4b              1395 fs/ext4/mballoc.c 			e4b->bd_info->bb_counters[order] += mb_buddy_adjust_border(&first, buddy, -1);
e4b              1397 fs/ext4/mballoc.c 			e4b->bd_info->bb_counters[order] += mb_buddy_adjust_border(&last, buddy, 1);
e4b              1402 fs/ext4/mballoc.c 		if (first == last || !(buddy2 = mb_find_buddy(e4b, order, &max))) {
e4b              1404 fs/ext4/mballoc.c 			e4b->bd_info->bb_counters[order - 1] += last - first + 1;
e4b              1413 fs/ext4/mballoc.c static void mb_free_blocks(struct inode *inode, struct ext4_buddy *e4b,
e4b              1420 fs/ext4/mballoc.c 	struct super_block *sb = e4b->bd_sb;
e4b              1425 fs/ext4/mballoc.c 	assert_spin_locked(ext4_group_lock_ptr(sb, e4b->bd_group));
e4b              1427 fs/ext4/mballoc.c 	if (unlikely(EXT4_MB_GRP_BBITMAP_CORRUPT(e4b->bd_info)))
e4b              1430 fs/ext4/mballoc.c 	mb_check_buddy(e4b);
e4b              1431 fs/ext4/mballoc.c 	mb_free_blocks_double(inode, e4b, first, count);
e4b              1433 fs/ext4/mballoc.c 	e4b->bd_info->bb_free += count;
e4b              1434 fs/ext4/mballoc.c 	if (first < e4b->bd_info->bb_first_free)
e4b              1435 fs/ext4/mballoc.c 		e4b->bd_info->bb_first_free = first;
e4b              1441 fs/ext4/mballoc.c 		left_is_free = !mb_test_bit(first - 1, e4b->bd_bitmap);
e4b              1442 fs/ext4/mballoc.c 	block = mb_test_and_clear_bits(e4b->bd_bitmap, first, count);
e4b              1444 fs/ext4/mballoc.c 		right_is_free = !mb_test_bit(last + 1, e4b->bd_bitmap);
e4b              1450 fs/ext4/mballoc.c 		blocknr = ext4_group_first_block_no(sb, e4b->bd_group);
e4b              1452 fs/ext4/mballoc.c 		ext4_grp_locked_error(sb, e4b->bd_group,
e4b              1458 fs/ext4/mballoc.c 		ext4_mark_group_bitmap_corrupted(sb, e4b->bd_group,
e4b              1460 fs/ext4/mballoc.c 		mb_regenerate_buddy(e4b);
e4b              1466 fs/ext4/mballoc.c 		e4b->bd_info->bb_fragments--;
e4b              1468 fs/ext4/mballoc.c 		e4b->bd_info->bb_fragments++;
e4b              1478 fs/ext4/mballoc.c 		e4b->bd_info->bb_counters[0] += left_is_free ? -1 : 1;
e4b              1482 fs/ext4/mballoc.c 		e4b->bd_info->bb_counters[0] += right_is_free ? -1 : 1;
e4b              1486 fs/ext4/mballoc.c 		mb_buddy_mark_free(e4b, first >> 1, last >> 1);
e4b              1489 fs/ext4/mballoc.c 	mb_set_largest_free_order(sb, e4b->bd_info);
e4b              1490 fs/ext4/mballoc.c 	mb_check_buddy(e4b);
e4b              1493 fs/ext4/mballoc.c static int mb_find_extent(struct ext4_buddy *e4b, int block,
e4b              1500 fs/ext4/mballoc.c 	assert_spin_locked(ext4_group_lock_ptr(e4b->bd_sb, e4b->bd_group));
e4b              1503 fs/ext4/mballoc.c 	buddy = mb_find_buddy(e4b, 0, &max);
e4b              1514 fs/ext4/mballoc.c 	order = mb_find_order_for_block(e4b, block);
e4b              1519 fs/ext4/mballoc.c 	ex->fe_group = e4b->bd_group;
e4b              1527 fs/ext4/mballoc.c 	       mb_find_buddy(e4b, order, &max)) {
e4b              1533 fs/ext4/mballoc.c 		if (mb_test_bit(next, e4b->bd_bitmap))
e4b              1536 fs/ext4/mballoc.c 		order = mb_find_order_for_block(e4b, next);
e4b              1542 fs/ext4/mballoc.c 	if (ex->fe_start + ex->fe_len > EXT4_CLUSTERS_PER_GROUP(e4b->bd_sb)) {
e4b              1545 fs/ext4/mballoc.c 		ext4_error(e4b->bd_sb, "corruption or bug in mb_find_extent "
e4b              1556 fs/ext4/mballoc.c static int mb_mark_used(struct ext4_buddy *e4b, struct ext4_free_extent *ex)
e4b              1568 fs/ext4/mballoc.c 	BUG_ON(start + len > (e4b->bd_sb->s_blocksize << 3));
e4b              1569 fs/ext4/mballoc.c 	BUG_ON(e4b->bd_group != ex->fe_group);
e4b              1570 fs/ext4/mballoc.c 	assert_spin_locked(ext4_group_lock_ptr(e4b->bd_sb, e4b->bd_group));
e4b              1571 fs/ext4/mballoc.c 	mb_check_buddy(e4b);
e4b              1572 fs/ext4/mballoc.c 	mb_mark_used_double(e4b, start, len);
e4b              1574 fs/ext4/mballoc.c 	e4b->bd_info->bb_free -= len;
e4b              1575 fs/ext4/mballoc.c 	if (e4b->bd_info->bb_first_free == start)
e4b              1576 fs/ext4/mballoc.c 		e4b->bd_info->bb_first_free += len;
e4b              1580 fs/ext4/mballoc.c 		mlen = !mb_test_bit(start - 1, e4b->bd_bitmap);
e4b              1581 fs/ext4/mballoc.c 	if (start + len < EXT4_SB(e4b->bd_sb)->s_mb_maxs[0])
e4b              1582 fs/ext4/mballoc.c 		max = !mb_test_bit(start + len, e4b->bd_bitmap);
e4b              1584 fs/ext4/mballoc.c 		e4b->bd_info->bb_fragments++;
e4b              1586 fs/ext4/mballoc.c 		e4b->bd_info->bb_fragments--;
e4b              1590 fs/ext4/mballoc.c 		ord = mb_find_order_for_block(e4b, start);
e4b              1595 fs/ext4/mballoc.c 			buddy = mb_find_buddy(e4b, ord, &max);
e4b              1598 fs/ext4/mballoc.c 			e4b->bd_info->bb_counters[ord]--;
e4b              1611 fs/ext4/mballoc.c 		buddy = mb_find_buddy(e4b, ord, &max);
e4b              1613 fs/ext4/mballoc.c 		e4b->bd_info->bb_counters[ord]--;
e4b              1617 fs/ext4/mballoc.c 		buddy = mb_find_buddy(e4b, ord, &max);
e4b              1620 fs/ext4/mballoc.c 		e4b->bd_info->bb_counters[ord]++;
e4b              1621 fs/ext4/mballoc.c 		e4b->bd_info->bb_counters[ord]++;
e4b              1623 fs/ext4/mballoc.c 	mb_set_largest_free_order(e4b->bd_sb, e4b->bd_info);
e4b              1625 fs/ext4/mballoc.c 	ext4_set_bits(e4b->bd_bitmap, ex->fe_start, len0);
e4b              1626 fs/ext4/mballoc.c 	mb_check_buddy(e4b);
e4b              1635 fs/ext4/mballoc.c 					struct ext4_buddy *e4b)
e4b              1640 fs/ext4/mballoc.c 	BUG_ON(ac->ac_b_ex.fe_group != e4b->bd_group);
e4b              1645 fs/ext4/mballoc.c 	ret = mb_mark_used(e4b, &ac->ac_b_ex);
e4b              1662 fs/ext4/mballoc.c 	ac->ac_bitmap_page = e4b->bd_bitmap_page;
e4b              1664 fs/ext4/mballoc.c 	ac->ac_buddy_page = e4b->bd_buddy_page;
e4b              1680 fs/ext4/mballoc.c 					struct ext4_buddy *e4b,
e4b              1707 fs/ext4/mballoc.c 			&& bex->fe_group == e4b->bd_group) {
e4b              1711 fs/ext4/mballoc.c 		max = mb_find_extent(e4b, bex->fe_start, gex->fe_len, &ex);
e4b              1713 fs/ext4/mballoc.c 			ext4_mb_use_best_found(ac, e4b);
e4b              1731 fs/ext4/mballoc.c 					struct ext4_buddy *e4b)
e4b              1748 fs/ext4/mballoc.c 		ext4_mb_use_best_found(ac, e4b);
e4b              1757 fs/ext4/mballoc.c 		ext4_mb_use_best_found(ac, e4b);
e4b              1785 fs/ext4/mballoc.c 	ext4_mb_check_limits(ac, e4b, 0);
e4b              1790 fs/ext4/mballoc.c 					struct ext4_buddy *e4b)
e4b              1798 fs/ext4/mballoc.c 	err = ext4_mb_load_buddy(ac->ac_sb, group, e4b);
e4b              1803 fs/ext4/mballoc.c 	max = mb_find_extent(e4b, ex.fe_start, ex.fe_len, &ex);
e4b              1807 fs/ext4/mballoc.c 		ext4_mb_use_best_found(ac, e4b);
e4b              1811 fs/ext4/mballoc.c 	ext4_mb_unload_buddy(e4b);
e4b              1818 fs/ext4/mballoc.c 				struct ext4_buddy *e4b)
e4b              1832 fs/ext4/mballoc.c 	err = ext4_mb_load_buddy(ac->ac_sb, group, e4b);
e4b              1836 fs/ext4/mballoc.c 	if (unlikely(EXT4_MB_GRP_BBITMAP_CORRUPT(e4b->bd_info))) {
e4b              1837 fs/ext4/mballoc.c 		ext4_mb_unload_buddy(e4b);
e4b              1842 fs/ext4/mballoc.c 	max = mb_find_extent(e4b, ac->ac_g_ex.fe_start,
e4b              1849 fs/ext4/mballoc.c 		start = ext4_group_first_block_no(ac->ac_sb, e4b->bd_group) +
e4b              1855 fs/ext4/mballoc.c 			ext4_mb_use_best_found(ac, e4b);
e4b              1863 fs/ext4/mballoc.c 		ext4_mb_use_best_found(ac, e4b);
e4b              1872 fs/ext4/mballoc.c 		ext4_mb_use_best_found(ac, e4b);
e4b              1875 fs/ext4/mballoc.c 	ext4_mb_unload_buddy(e4b);
e4b              1886 fs/ext4/mballoc.c 					struct ext4_buddy *e4b)
e4b              1889 fs/ext4/mballoc.c 	struct ext4_group_info *grp = e4b->bd_info;
e4b              1900 fs/ext4/mballoc.c 		buddy = mb_find_buddy(e4b, i, &max);
e4b              1910 fs/ext4/mballoc.c 		ac->ac_b_ex.fe_group = e4b->bd_group;
e4b              1912 fs/ext4/mballoc.c 		ext4_mb_use_best_found(ac, e4b);
e4b              1930 fs/ext4/mballoc.c 					struct ext4_buddy *e4b)
e4b              1933 fs/ext4/mballoc.c 	void *bitmap = e4b->bd_bitmap;
e4b              1938 fs/ext4/mballoc.c 	free = e4b->bd_info->bb_free;
e4b              1942 fs/ext4/mballoc.c 	i = e4b->bd_info->bb_first_free;
e4b              1953 fs/ext4/mballoc.c 			ext4_grp_locked_error(sb, e4b->bd_group, 0, 0,
e4b              1957 fs/ext4/mballoc.c 			ext4_mark_group_bitmap_corrupted(sb, e4b->bd_group,
e4b              1962 fs/ext4/mballoc.c 		mb_find_extent(e4b, i, ac->ac_g_ex.fe_len, &ex);
e4b              1966 fs/ext4/mballoc.c 			ext4_grp_locked_error(sb, e4b->bd_group, 0, 0,
e4b              1970 fs/ext4/mballoc.c 			ext4_mark_group_bitmap_corrupted(sb, e4b->bd_group,
e4b              1980 fs/ext4/mballoc.c 		ext4_mb_measure_extent(ac, &ex, e4b);
e4b              1986 fs/ext4/mballoc.c 	ext4_mb_check_limits(ac, e4b, 1);
e4b              1995 fs/ext4/mballoc.c 				 struct ext4_buddy *e4b)
e4b              1999 fs/ext4/mballoc.c 	void *bitmap = e4b->bd_bitmap;
e4b              2009 fs/ext4/mballoc.c 	first_group_block = ext4_group_first_block_no(sb, e4b->bd_group);
e4b              2017 fs/ext4/mballoc.c 			max = mb_find_extent(e4b, i, sbi->s_stripe, &ex);
e4b              2022 fs/ext4/mballoc.c 				ext4_mb_use_best_found(ac, e4b);
e4b              2108 fs/ext4/mballoc.c 	struct ext4_buddy e4b;
e4b              2120 fs/ext4/mballoc.c 	err = ext4_mb_find_by_goal(ac, &e4b);
e4b              2192 fs/ext4/mballoc.c 			err = ext4_mb_load_buddy(sb, group, &e4b);
e4b              2205 fs/ext4/mballoc.c 				ext4_mb_unload_buddy(&e4b);
e4b              2213 fs/ext4/mballoc.c 				ext4_mb_simple_scan_group(ac, &e4b);
e4b              2216 fs/ext4/mballoc.c 				ext4_mb_scan_aligned(ac, &e4b);
e4b              2218 fs/ext4/mballoc.c 				ext4_mb_complex_scan_group(ac, &e4b);
e4b              2221 fs/ext4/mballoc.c 			ext4_mb_unload_buddy(&e4b);
e4b              2235 fs/ext4/mballoc.c 		ext4_mb_try_best_found(ac, &e4b);
e4b              2288 fs/ext4/mballoc.c 	struct ext4_buddy e4b;
e4b              2310 fs/ext4/mballoc.c 		err = ext4_mb_load_buddy(sb, group, &e4b);
e4b              2321 fs/ext4/mballoc.c 		ext4_mb_unload_buddy(&e4b);
e4b              2801 fs/ext4/mballoc.c 	struct ext4_buddy e4b;
e4b              2808 fs/ext4/mballoc.c 	err = ext4_mb_load_buddy(sb, entry->efd_group, &e4b);
e4b              2816 fs/ext4/mballoc.c 	db = e4b.bd_info;
e4b              2823 fs/ext4/mballoc.c 	mb_free_blocks(NULL, &e4b, entry->efd_start_cluster, entry->efd_count);
e4b              2838 fs/ext4/mballoc.c 		put_page(e4b.bd_buddy_page);
e4b              2839 fs/ext4/mballoc.c 		put_page(e4b.bd_bitmap_page);
e4b              2843 fs/ext4/mballoc.c 	ext4_mb_unload_buddy(&e4b);
e4b              3308 fs/ext4/mballoc.c 	struct ext4_buddy e4b;
e4b              3314 fs/ext4/mballoc.c 		err = ext4_mb_load_buddy(ac->ac_sb, ac->ac_f_ex.fe_group, &e4b);
e4b              3325 fs/ext4/mballoc.c 		mb_free_blocks(ac->ac_inode, &e4b, ac->ac_f_ex.fe_start,
e4b              3328 fs/ext4/mballoc.c 		ext4_mb_unload_buddy(&e4b);
e4b              3817 fs/ext4/mballoc.c ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
e4b              3820 fs/ext4/mballoc.c 	struct super_block *sb = e4b->bd_sb;
e4b              3832 fs/ext4/mballoc.c 	BUG_ON(group != e4b->bd_group && pa->pa_len != 0);
e4b              3849 fs/ext4/mballoc.c 		mb_free_blocks(pa->pa_inode, e4b, bit, next - bit);
e4b              3853 fs/ext4/mballoc.c 		ext4_msg(e4b->bd_sb, KERN_CRIT,
e4b              3871 fs/ext4/mballoc.c ext4_mb_release_group_pa(struct ext4_buddy *e4b,
e4b              3874 fs/ext4/mballoc.c 	struct super_block *sb = e4b->bd_sb;
e4b              3881 fs/ext4/mballoc.c 	BUG_ON(group != e4b->bd_group && pa->pa_len != 0);
e4b              3882 fs/ext4/mballoc.c 	mb_free_blocks(pa->pa_inode, e4b, bit, pa->pa_len);
e4b              3906 fs/ext4/mballoc.c 	struct ext4_buddy e4b;
e4b              3924 fs/ext4/mballoc.c 	err = ext4_mb_load_buddy(sb, group, &e4b);
e4b              3986 fs/ext4/mballoc.c 			ext4_mb_release_group_pa(&e4b, pa);
e4b              3988 fs/ext4/mballoc.c 			ext4_mb_release_inode_pa(&e4b, bitmap_bh, pa);
e4b              3996 fs/ext4/mballoc.c 	ext4_mb_unload_buddy(&e4b);
e4b              4018 fs/ext4/mballoc.c 	struct ext4_buddy e4b;
e4b              4084 fs/ext4/mballoc.c 		err = ext4_mb_load_buddy_gfp(sb, group, &e4b,
e4b              4097 fs/ext4/mballoc.c 			ext4_mb_unload_buddy(&e4b);
e4b              4103 fs/ext4/mballoc.c 		ext4_mb_release_inode_pa(&e4b, bitmap_bh, pa);
e4b              4106 fs/ext4/mballoc.c 		ext4_mb_unload_buddy(&e4b);
e4b              4294 fs/ext4/mballoc.c 	struct ext4_buddy e4b;
e4b              4346 fs/ext4/mballoc.c 		err = ext4_mb_load_buddy_gfp(sb, group, &e4b,
e4b              4355 fs/ext4/mballoc.c 		ext4_mb_release_group_pa(&e4b, pa);
e4b              4358 fs/ext4/mballoc.c 		ext4_mb_unload_buddy(&e4b);
e4b              4646 fs/ext4/mballoc.c ext4_mb_free_metadata(handle_t *handle, struct ext4_buddy *e4b,
e4b              4649 fs/ext4/mballoc.c 	ext4_group_t group = e4b->bd_group;
e4b              4653 fs/ext4/mballoc.c 	struct ext4_group_info *db = e4b->bd_info;
e4b              4654 fs/ext4/mballoc.c 	struct super_block *sb = e4b->bd_sb;
e4b              4660 fs/ext4/mballoc.c 	BUG_ON(e4b->bd_bitmap_page == NULL);
e4b              4661 fs/ext4/mballoc.c 	BUG_ON(e4b->bd_buddy_page == NULL);
e4b              4672 fs/ext4/mballoc.c 		get_page(e4b->bd_buddy_page);
e4b              4673 fs/ext4/mballoc.c 		get_page(e4b->bd_bitmap_page);
e4b              4737 fs/ext4/mballoc.c 	struct ext4_buddy e4b;
e4b              4879 fs/ext4/mballoc.c 	err = ext4_mb_load_buddy_gfp(sb, block_group, &e4b,
e4b              4907 fs/ext4/mballoc.c 		ext4_mb_free_metadata(handle, &e4b, new_entry);
e4b              4922 fs/ext4/mballoc.c 			EXT4_MB_GRP_CLEAR_TRIMMED(e4b.bd_info);
e4b              4926 fs/ext4/mballoc.c 		mb_free_blocks(inode, &e4b, bit, count_clusters);
e4b              4954 fs/ext4/mballoc.c 	ext4_mb_unload_buddy(&e4b);
e4b              4997 fs/ext4/mballoc.c 	struct ext4_buddy e4b;
e4b              5072 fs/ext4/mballoc.c 	err = ext4_mb_load_buddy(sb, block_group, &e4b);
e4b              5083 fs/ext4/mballoc.c 	mb_free_blocks(NULL, &e4b, bit, cluster_count);
e4b              5100 fs/ext4/mballoc.c 	ext4_mb_unload_buddy(&e4b);
e4b              5131 fs/ext4/mballoc.c 			     ext4_group_t group, struct ext4_buddy *e4b)
e4b              5150 fs/ext4/mballoc.c 	mb_mark_used(e4b, &ex);
e4b              5154 fs/ext4/mballoc.c 	mb_free_blocks(NULL, e4b, start, ex.fe_len);
e4b              5183 fs/ext4/mballoc.c 	struct ext4_buddy e4b;
e4b              5188 fs/ext4/mballoc.c 	ret = ext4_mb_load_buddy(sb, group, &e4b);
e4b              5194 fs/ext4/mballoc.c 	bitmap = e4b.bd_bitmap;
e4b              5197 fs/ext4/mballoc.c 	if (EXT4_MB_GRP_WAS_TRIMMED(e4b.bd_info) &&
e4b              5201 fs/ext4/mballoc.c 	start = (e4b.bd_info->bb_first_free > start) ?
e4b              5202 fs/ext4/mballoc.c 		e4b.bd_info->bb_first_free : start;
e4b              5212 fs/ext4/mballoc.c 					       next - start, group, &e4b);
e4b              5232 fs/ext4/mballoc.c 		if ((e4b.bd_info->bb_free - free_count) < minblocks)
e4b              5238 fs/ext4/mballoc.c 		EXT4_MB_GRP_SET_TRIMMED(e4b.bd_info);
e4b              5242 fs/ext4/mballoc.c 	ext4_mb_unload_buddy(&e4b);
e4b              5353 fs/ext4/mballoc.c 	struct ext4_buddy		e4b;
e4b              5356 fs/ext4/mballoc.c 	error = ext4_mb_load_buddy(sb, group, &e4b);
e4b              5359 fs/ext4/mballoc.c 	bitmap = e4b.bd_bitmap;
e4b              5363 fs/ext4/mballoc.c 	start = (e4b.bd_info->bb_first_free > start) ?
e4b              5364 fs/ext4/mballoc.c 		e4b.bd_info->bb_first_free : start;
e4b              5385 fs/ext4/mballoc.c 	ext4_mb_unload_buddy(&e4b);