diff options
author | Theodore Ts'o <tytso@mit.edu> | 2010-06-29 12:54:28 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2010-06-29 12:54:28 -0400 |
commit | e29136f80e775b0310273932b4297a62f5574a29 (patch) | |
tree | d10d56b15b7968744ea0becdf61440aae7e609c5 /fs/ext4/mballoc.c | |
parent | c67d859e39896e4286249da89c4ca0ef8bd949cb (diff) |
ext4: Enhance ext4_grp_locked_error() to take block and function numbers
Also use a macro definition so that __func__ and __LINE__ is implicit.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/mballoc.c')
-rw-r--r-- | fs/ext4/mballoc.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index b2948b047973..3dfad95f0f98 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c | |||
@@ -446,10 +446,11 @@ static void mb_free_blocks_double(struct inode *inode, struct ext4_buddy *e4b, | |||
446 | blocknr = ext4_group_first_block_no(sb, e4b->bd_group); | 446 | blocknr = ext4_group_first_block_no(sb, e4b->bd_group); |
447 | blocknr += first + i; | 447 | blocknr += first + i; |
448 | ext4_grp_locked_error(sb, e4b->bd_group, | 448 | ext4_grp_locked_error(sb, e4b->bd_group, |
449 | __func__, "double-free of inode" | 449 | inode ? inode->i_ino : 0, |
450 | " %lu's block %llu(bit %u in group %u)", | 450 | blocknr, |
451 | inode ? inode->i_ino : 0, blocknr, | 451 | "freeing block already freed " |
452 | first + i, e4b->bd_group); | 452 | "(bit %u)", |
453 | first + i); | ||
453 | } | 454 | } |
454 | mb_clear_bit(first + i, e4b->bd_info->bb_bitmap); | 455 | mb_clear_bit(first + i, e4b->bd_info->bb_bitmap); |
455 | } | 456 | } |
@@ -712,9 +713,9 @@ void ext4_mb_generate_buddy(struct super_block *sb, | |||
712 | grp->bb_fragments = fragments; | 713 | grp->bb_fragments = fragments; |
713 | 714 | ||
714 | if (free != grp->bb_free) { | 715 | if (free != grp->bb_free) { |
715 | ext4_grp_locked_error(sb, group, __func__, | 716 | ext4_grp_locked_error(sb, group, 0, 0, |
716 | "EXT4-fs: group %u: %u blocks in bitmap, %u in gd", | 717 | "%u blocks in bitmap, %u in gd", |
717 | group, free, grp->bb_free); | 718 | free, grp->bb_free); |
718 | /* | 719 | /* |
719 | * If we intent to continue, we consider group descritor | 720 | * If we intent to continue, we consider group descritor |
720 | * corrupt and update bb_free using bitmap value | 721 | * corrupt and update bb_free using bitmap value |
@@ -1296,10 +1297,10 @@ static void mb_free_blocks(struct inode *inode, struct ext4_buddy *e4b, | |||
1296 | blocknr = ext4_group_first_block_no(sb, e4b->bd_group); | 1297 | blocknr = ext4_group_first_block_no(sb, e4b->bd_group); |
1297 | blocknr += block; | 1298 | blocknr += block; |
1298 | ext4_grp_locked_error(sb, e4b->bd_group, | 1299 | ext4_grp_locked_error(sb, e4b->bd_group, |
1299 | __func__, "double-free of inode" | 1300 | inode ? inode->i_ino : 0, |
1300 | " %lu's block %llu(bit %u in group %u)", | 1301 | blocknr, |
1301 | inode ? inode->i_ino : 0, blocknr, block, | 1302 | "freeing already freed block " |
1302 | e4b->bd_group); | 1303 | "(bit %u)", block); |
1303 | } | 1304 | } |
1304 | mb_clear_bit(block, EXT4_MB_BITMAP(e4b)); | 1305 | mb_clear_bit(block, EXT4_MB_BITMAP(e4b)); |
1305 | e4b->bd_info->bb_counters[order]++; | 1306 | e4b->bd_info->bb_counters[order]++; |
@@ -1788,8 +1789,8 @@ void ext4_mb_complex_scan_group(struct ext4_allocation_context *ac, | |||
1788 | * free blocks even though group info says we | 1789 | * free blocks even though group info says we |
1789 | * we have free blocks | 1790 | * we have free blocks |
1790 | */ | 1791 | */ |
1791 | ext4_grp_locked_error(sb, e4b->bd_group, | 1792 | ext4_grp_locked_error(sb, e4b->bd_group, 0, 0, |
1792 | __func__, "%d free blocks as per " | 1793 | "%d free blocks as per " |
1793 | "group info. But bitmap says 0", | 1794 | "group info. But bitmap says 0", |
1794 | free); | 1795 | free); |
1795 | break; | 1796 | break; |
@@ -1798,8 +1799,8 @@ void ext4_mb_complex_scan_group(struct ext4_allocation_context *ac, | |||
1798 | mb_find_extent(e4b, 0, i, ac->ac_g_ex.fe_len, &ex); | 1799 | mb_find_extent(e4b, 0, i, ac->ac_g_ex.fe_len, &ex); |
1799 | BUG_ON(ex.fe_len <= 0); | 1800 | BUG_ON(ex.fe_len <= 0); |
1800 | if (free < ex.fe_len) { | 1801 | if (free < ex.fe_len) { |
1801 | ext4_grp_locked_error(sb, e4b->bd_group, | 1802 | ext4_grp_locked_error(sb, e4b->bd_group, 0, 0, |
1802 | __func__, "%d free blocks as per " | 1803 | "%d free blocks as per " |
1803 | "group info. But got %d blocks", | 1804 | "group info. But got %d blocks", |
1804 | free, ex.fe_len); | 1805 | free, ex.fe_len); |
1805 | /* | 1806 | /* |
@@ -3584,8 +3585,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh, | |||
3584 | pa, (unsigned long) pa->pa_lstart, | 3585 | pa, (unsigned long) pa->pa_lstart, |
3585 | (unsigned long) pa->pa_pstart, | 3586 | (unsigned long) pa->pa_pstart, |
3586 | (unsigned long) pa->pa_len); | 3587 | (unsigned long) pa->pa_len); |
3587 | ext4_grp_locked_error(sb, group, | 3588 | ext4_grp_locked_error(sb, group, 0, 0, "free %u, pa_free %u", |
3588 | __func__, "free %u, pa_free %u", | ||
3589 | free, pa->pa_free); | 3589 | free, pa->pa_free); |
3590 | /* | 3590 | /* |
3591 | * pa is already deleted so we use the value obtained | 3591 | * pa is already deleted so we use the value obtained |
@@ -4395,6 +4395,7 @@ static noinline_for_stack int | |||
4395 | ext4_mb_free_metadata(handle_t *handle, struct ext4_buddy *e4b, | 4395 | ext4_mb_free_metadata(handle_t *handle, struct ext4_buddy *e4b, |
4396 | struct ext4_free_data *new_entry) | 4396 | struct ext4_free_data *new_entry) |
4397 | { | 4397 | { |
4398 | ext4_group_t group = e4b->bd_group; | ||
4398 | ext4_grpblk_t block; | 4399 | ext4_grpblk_t block; |
4399 | struct ext4_free_data *entry; | 4400 | struct ext4_free_data *entry; |
4400 | struct ext4_group_info *db = e4b->bd_info; | 4401 | struct ext4_group_info *db = e4b->bd_info; |
@@ -4427,9 +4428,9 @@ ext4_mb_free_metadata(handle_t *handle, struct ext4_buddy *e4b, | |||
4427 | else if (block >= (entry->start_blk + entry->count)) | 4428 | else if (block >= (entry->start_blk + entry->count)) |
4428 | n = &(*n)->rb_right; | 4429 | n = &(*n)->rb_right; |
4429 | else { | 4430 | else { |
4430 | ext4_grp_locked_error(sb, e4b->bd_group, __func__, | 4431 | ext4_grp_locked_error(sb, group, 0, |
4431 | "Double free of blocks %d (%d %d)", | 4432 | ext4_group_first_block_no(sb, group) + block, |
4432 | block, entry->start_blk, entry->count); | 4433 | "Block already on to-be-freed list"); |
4433 | return 0; | 4434 | return 0; |
4434 | } | 4435 | } |
4435 | } | 4436 | } |