diff options
author | Theodore Ts'o <tytso@mit.edu> | 2009-01-03 20:03:21 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2009-01-03 20:03:21 -0500 |
commit | ba80b1019aa722b24506db1ee755e0bb2f513022 (patch) | |
tree | 0c9a7dfd3af0f5991f3eaaeb65d735b11e9cf777 /fs/ext4 | |
parent | c31910672376dfb8d020e32afa7249763bcd924a (diff) |
ext4: Add markers for better debuggability
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4')
-rw-r--r-- | fs/ext4/ialloc.c | 9 | ||||
-rw-r--r-- | fs/ext4/inode.c | 56 | ||||
-rw-r--r-- | fs/ext4/mballoc.c | 54 |
3 files changed, 116 insertions, 3 deletions
diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index e3aa3fa38608..369c34c64292 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c | |||
@@ -210,6 +210,11 @@ void ext4_free_inode(handle_t *handle, struct inode *inode) | |||
210 | 210 | ||
211 | ino = inode->i_ino; | 211 | ino = inode->i_ino; |
212 | ext4_debug("freeing inode %lu\n", ino); | 212 | ext4_debug("freeing inode %lu\n", ino); |
213 | trace_mark(ext4_free_inode, | ||
214 | "dev %s ino %lu mode %d uid %lu gid %lu bocks %llu", | ||
215 | sb->s_id, inode->i_ino, inode->i_mode, | ||
216 | (unsigned long) inode->i_uid, (unsigned long) inode->i_gid, | ||
217 | (unsigned long long) inode->i_blocks); | ||
213 | 218 | ||
214 | /* | 219 | /* |
215 | * Note: we must free any quota before locking the superblock, | 220 | * Note: we must free any quota before locking the superblock, |
@@ -698,6 +703,8 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode *dir, int mode) | |||
698 | return ERR_PTR(-EPERM); | 703 | return ERR_PTR(-EPERM); |
699 | 704 | ||
700 | sb = dir->i_sb; | 705 | sb = dir->i_sb; |
706 | trace_mark(ext4_request_inode, "dev %s dir %lu mode %d", sb->s_id, | ||
707 | dir->i_ino, mode); | ||
701 | inode = new_inode(sb); | 708 | inode = new_inode(sb); |
702 | if (!inode) | 709 | if (!inode) |
703 | return ERR_PTR(-ENOMEM); | 710 | return ERR_PTR(-ENOMEM); |
@@ -925,6 +932,8 @@ got: | |||
925 | } | 932 | } |
926 | 933 | ||
927 | ext4_debug("allocating inode %lu\n", inode->i_ino); | 934 | ext4_debug("allocating inode %lu\n", inode->i_ino); |
935 | trace_mark(ext4_allocate_inode, "dev %s ino %lu dir %lu mode %d", | ||
936 | sb->s_id, inode->i_ino, dir->i_ino, mode); | ||
928 | goto really_out; | 937 | goto really_out; |
929 | fail: | 938 | fail: |
930 | ext4_std_error(sb, err); | 939 | ext4_std_error(sb, err); |
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 56142accf5cd..4cac8da4e0c1 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
@@ -1351,6 +1351,10 @@ static int ext4_write_begin(struct file *file, struct address_space *mapping, | |||
1351 | pgoff_t index; | 1351 | pgoff_t index; |
1352 | unsigned from, to; | 1352 | unsigned from, to; |
1353 | 1353 | ||
1354 | trace_mark(ext4_write_begin, | ||
1355 | "dev %s ino %lu pos %llu len %u flags %u", | ||
1356 | inode->i_sb->s_id, inode->i_ino, | ||
1357 | (unsigned long long) pos, len, flags); | ||
1354 | index = pos >> PAGE_CACHE_SHIFT; | 1358 | index = pos >> PAGE_CACHE_SHIFT; |
1355 | from = pos & (PAGE_CACHE_SIZE - 1); | 1359 | from = pos & (PAGE_CACHE_SIZE - 1); |
1356 | to = from + len; | 1360 | to = from + len; |
@@ -1422,6 +1426,10 @@ static int ext4_ordered_write_end(struct file *file, | |||
1422 | struct inode *inode = mapping->host; | 1426 | struct inode *inode = mapping->host; |
1423 | int ret = 0, ret2; | 1427 | int ret = 0, ret2; |
1424 | 1428 | ||
1429 | trace_mark(ext4_ordered_write_end, | ||
1430 | "dev %s ino %lu pos %llu len %u copied %u", | ||
1431 | inode->i_sb->s_id, inode->i_ino, | ||
1432 | (unsigned long long) pos, len, copied); | ||
1425 | ret = ext4_jbd2_file_inode(handle, inode); | 1433 | ret = ext4_jbd2_file_inode(handle, inode); |
1426 | 1434 | ||
1427 | if (ret == 0) { | 1435 | if (ret == 0) { |
@@ -1460,6 +1468,10 @@ static int ext4_writeback_write_end(struct file *file, | |||
1460 | int ret = 0, ret2; | 1468 | int ret = 0, ret2; |
1461 | loff_t new_i_size; | 1469 | loff_t new_i_size; |
1462 | 1470 | ||
1471 | trace_mark(ext4_writeback_write_end, | ||
1472 | "dev %s ino %lu pos %llu len %u copied %u", | ||
1473 | inode->i_sb->s_id, inode->i_ino, | ||
1474 | (unsigned long long) pos, len, copied); | ||
1463 | new_i_size = pos + copied; | 1475 | new_i_size = pos + copied; |
1464 | if (new_i_size > EXT4_I(inode)->i_disksize) { | 1476 | if (new_i_size > EXT4_I(inode)->i_disksize) { |
1465 | ext4_update_i_disksize(inode, new_i_size); | 1477 | ext4_update_i_disksize(inode, new_i_size); |
@@ -1495,6 +1507,10 @@ static int ext4_journalled_write_end(struct file *file, | |||
1495 | unsigned from, to; | 1507 | unsigned from, to; |
1496 | loff_t new_i_size; | 1508 | loff_t new_i_size; |
1497 | 1509 | ||
1510 | trace_mark(ext4_journalled_write_end, | ||
1511 | "dev %s ino %lu pos %llu len %u copied %u", | ||
1512 | inode->i_sb->s_id, inode->i_ino, | ||
1513 | (unsigned long long) pos, len, copied); | ||
1498 | from = pos & (PAGE_CACHE_SIZE - 1); | 1514 | from = pos & (PAGE_CACHE_SIZE - 1); |
1499 | to = from + len; | 1515 | to = from + len; |
1500 | 1516 | ||
@@ -2311,6 +2327,9 @@ static int ext4_da_writepage(struct page *page, | |||
2311 | struct buffer_head *page_bufs; | 2327 | struct buffer_head *page_bufs; |
2312 | struct inode *inode = page->mapping->host; | 2328 | struct inode *inode = page->mapping->host; |
2313 | 2329 | ||
2330 | trace_mark(ext4_da_writepage, | ||
2331 | "dev %s ino %lu page_index %lu", | ||
2332 | inode->i_sb->s_id, inode->i_ino, page->index); | ||
2314 | size = i_size_read(inode); | 2333 | size = i_size_read(inode); |
2315 | if (page->index == size >> PAGE_CACHE_SHIFT) | 2334 | if (page->index == size >> PAGE_CACHE_SHIFT) |
2316 | len = size & ~PAGE_CACHE_MASK; | 2335 | len = size & ~PAGE_CACHE_MASK; |
@@ -2421,6 +2440,20 @@ static int ext4_da_writepages(struct address_space *mapping, | |||
2421 | int needed_blocks, ret = 0, nr_to_writebump = 0; | 2440 | int needed_blocks, ret = 0, nr_to_writebump = 0; |
2422 | struct ext4_sb_info *sbi = EXT4_SB(mapping->host->i_sb); | 2441 | struct ext4_sb_info *sbi = EXT4_SB(mapping->host->i_sb); |
2423 | 2442 | ||
2443 | trace_mark(ext4_da_writepages, | ||
2444 | "dev %s ino %lu nr_t_write %ld " | ||
2445 | "pages_skipped %ld range_start %llu " | ||
2446 | "range_end %llu nonblocking %d " | ||
2447 | "for_kupdate %d for_reclaim %d " | ||
2448 | "for_writepages %d range_cyclic %d", | ||
2449 | inode->i_sb->s_id, inode->i_ino, | ||
2450 | wbc->nr_to_write, wbc->pages_skipped, | ||
2451 | (unsigned long long) wbc->range_start, | ||
2452 | (unsigned long long) wbc->range_end, | ||
2453 | wbc->nonblocking, wbc->for_kupdate, | ||
2454 | wbc->for_reclaim, wbc->for_writepages, | ||
2455 | wbc->range_cyclic); | ||
2456 | |||
2424 | /* | 2457 | /* |
2425 | * No pages to write? This is mainly a kludge to avoid starting | 2458 | * No pages to write? This is mainly a kludge to avoid starting |
2426 | * a transaction for special inodes like journal inode on last iput() | 2459 | * a transaction for special inodes like journal inode on last iput() |
@@ -2539,6 +2572,14 @@ out_writepages: | |||
2539 | if (!no_nrwrite_index_update) | 2572 | if (!no_nrwrite_index_update) |
2540 | wbc->no_nrwrite_index_update = 0; | 2573 | wbc->no_nrwrite_index_update = 0; |
2541 | wbc->nr_to_write -= nr_to_writebump; | 2574 | wbc->nr_to_write -= nr_to_writebump; |
2575 | trace_mark(ext4_da_writepage_result, | ||
2576 | "dev %s ino %lu ret %d pages_written %d " | ||
2577 | "pages_skipped %ld congestion %d " | ||
2578 | "more_io %d no_nrwrite_index_update %d", | ||
2579 | inode->i_sb->s_id, inode->i_ino, ret, | ||
2580 | pages_written, wbc->pages_skipped, | ||
2581 | wbc->encountered_congestion, wbc->more_io, | ||
2582 | wbc->no_nrwrite_index_update); | ||
2542 | return ret; | 2583 | return ret; |
2543 | } | 2584 | } |
2544 | 2585 | ||
@@ -2590,6 +2631,11 @@ static int ext4_da_write_begin(struct file *file, struct address_space *mapping, | |||
2590 | len, flags, pagep, fsdata); | 2631 | len, flags, pagep, fsdata); |
2591 | } | 2632 | } |
2592 | *fsdata = (void *)0; | 2633 | *fsdata = (void *)0; |
2634 | |||
2635 | trace_mark(ext4_da_write_begin, | ||
2636 | "dev %s ino %lu pos %llu len %u flags %u", | ||
2637 | inode->i_sb->s_id, inode->i_ino, | ||
2638 | (unsigned long long) pos, len, flags); | ||
2593 | retry: | 2639 | retry: |
2594 | /* | 2640 | /* |
2595 | * With delayed allocation, we don't log the i_disksize update | 2641 | * With delayed allocation, we don't log the i_disksize update |
@@ -2679,6 +2725,10 @@ static int ext4_da_write_end(struct file *file, | |||
2679 | } | 2725 | } |
2680 | } | 2726 | } |
2681 | 2727 | ||
2728 | trace_mark(ext4_da_write_end, | ||
2729 | "dev %s ino %lu pos %llu len %u copied %u", | ||
2730 | inode->i_sb->s_id, inode->i_ino, | ||
2731 | (unsigned long long) pos, len, copied); | ||
2682 | start = pos & (PAGE_CACHE_SIZE - 1); | 2732 | start = pos & (PAGE_CACHE_SIZE - 1); |
2683 | end = start + copied - 1; | 2733 | end = start + copied - 1; |
2684 | 2734 | ||
@@ -2892,6 +2942,9 @@ static int ext4_normal_writepage(struct page *page, | |||
2892 | loff_t size = i_size_read(inode); | 2942 | loff_t size = i_size_read(inode); |
2893 | loff_t len; | 2943 | loff_t len; |
2894 | 2944 | ||
2945 | trace_mark(ext4_normal_writepage, | ||
2946 | "dev %s ino %lu page_index %lu", | ||
2947 | inode->i_sb->s_id, inode->i_ino, page->index); | ||
2895 | J_ASSERT(PageLocked(page)); | 2948 | J_ASSERT(PageLocked(page)); |
2896 | if (page->index == size >> PAGE_CACHE_SHIFT) | 2949 | if (page->index == size >> PAGE_CACHE_SHIFT) |
2897 | len = size & ~PAGE_CACHE_MASK; | 2950 | len = size & ~PAGE_CACHE_MASK; |
@@ -2977,6 +3030,9 @@ static int ext4_journalled_writepage(struct page *page, | |||
2977 | loff_t size = i_size_read(inode); | 3030 | loff_t size = i_size_read(inode); |
2978 | loff_t len; | 3031 | loff_t len; |
2979 | 3032 | ||
3033 | trace_mark(ext4_journalled_writepage, | ||
3034 | "dev %s ino %lu page_index %lu", | ||
3035 | inode->i_sb->s_id, inode->i_ino, page->index); | ||
2980 | J_ASSERT(PageLocked(page)); | 3036 | J_ASSERT(PageLocked(page)); |
2981 | if (page->index == size >> PAGE_CACHE_SHIFT) | 3037 | if (page->index == size >> PAGE_CACHE_SHIFT) |
2982 | len = size & ~PAGE_CACHE_MASK; | 3038 | len = size & ~PAGE_CACHE_MASK; |
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 05d9f81956c6..918aec0c8a11 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c | |||
@@ -2878,8 +2878,9 @@ static void release_blocks_on_commit(journal_t *journal, transaction_t *txn) | |||
2878 | discard_block = (ext4_fsblk_t) entry->group * EXT4_BLOCKS_PER_GROUP(sb) | 2878 | discard_block = (ext4_fsblk_t) entry->group * EXT4_BLOCKS_PER_GROUP(sb) |
2879 | + entry->start_blk | 2879 | + entry->start_blk |
2880 | + le32_to_cpu(EXT4_SB(sb)->s_es->s_first_data_block); | 2880 | + le32_to_cpu(EXT4_SB(sb)->s_es->s_first_data_block); |
2881 | trace_mark(ext4_discard_blocks, "dev %s blk %llu count %u", sb->s_id, | 2881 | trace_mark(ext4_discard_blocks, "dev %s blk %llu count %u", |
2882 | (unsigned long long) discard_block, entry->count); | 2882 | sb->s_id, (unsigned long long) discard_block, |
2883 | entry->count); | ||
2883 | sb_issue_discard(sb, discard_block, entry->count); | 2884 | sb_issue_discard(sb, discard_block, entry->count); |
2884 | 2885 | ||
2885 | kmem_cache_free(ext4_free_ext_cachep, entry); | 2886 | kmem_cache_free(ext4_free_ext_cachep, entry); |
@@ -3697,6 +3698,10 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac) | |||
3697 | 3698 | ||
3698 | mb_debug("new inode pa %p: %llu/%u for %u\n", pa, | 3699 | mb_debug("new inode pa %p: %llu/%u for %u\n", pa, |
3699 | pa->pa_pstart, pa->pa_len, pa->pa_lstart); | 3700 | pa->pa_pstart, pa->pa_len, pa->pa_lstart); |
3701 | trace_mark(ext4_mb_new_inode_pa, | ||
3702 | "dev %s ino %lu pstart %llu len %u lstart %u", | ||
3703 | sb->s_id, ac->ac_inode->i_ino, | ||
3704 | pa->pa_pstart, pa->pa_len, pa->pa_lstart); | ||
3700 | 3705 | ||
3701 | ext4_mb_use_inode_pa(ac, pa); | 3706 | ext4_mb_use_inode_pa(ac, pa); |
3702 | atomic_add(pa->pa_free, &EXT4_SB(sb)->s_mb_preallocated); | 3707 | atomic_add(pa->pa_free, &EXT4_SB(sb)->s_mb_preallocated); |
@@ -3754,7 +3759,9 @@ ext4_mb_new_group_pa(struct ext4_allocation_context *ac) | |||
3754 | pa->pa_linear = 1; | 3759 | pa->pa_linear = 1; |
3755 | 3760 | ||
3756 | mb_debug("new group pa %p: %llu/%u for %u\n", pa, | 3761 | mb_debug("new group pa %p: %llu/%u for %u\n", pa, |
3757 | pa->pa_pstart, pa->pa_len, pa->pa_lstart); | 3762 | pa->pa_pstart, pa->pa_len, pa->pa_lstart); |
3763 | trace_mark(ext4_mb_new_group_pa, "dev %s pstart %llu len %u lstart %u", | ||
3764 | sb->s_id, pa->pa_pstart, pa->pa_len, pa->pa_lstart); | ||
3758 | 3765 | ||
3759 | ext4_mb_use_group_pa(ac, pa); | 3766 | ext4_mb_use_group_pa(ac, pa); |
3760 | atomic_add(pa->pa_free, &EXT4_SB(sb)->s_mb_preallocated); | 3767 | atomic_add(pa->pa_free, &EXT4_SB(sb)->s_mb_preallocated); |
@@ -3807,12 +3814,14 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh, | |||
3807 | unsigned int next; | 3814 | unsigned int next; |
3808 | ext4_group_t group; | 3815 | ext4_group_t group; |
3809 | ext4_grpblk_t bit; | 3816 | ext4_grpblk_t bit; |
3817 | unsigned long long grp_blk_start; | ||
3810 | sector_t start; | 3818 | sector_t start; |
3811 | int err = 0; | 3819 | int err = 0; |
3812 | int free = 0; | 3820 | int free = 0; |
3813 | 3821 | ||
3814 | BUG_ON(pa->pa_deleted == 0); | 3822 | BUG_ON(pa->pa_deleted == 0); |
3815 | ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit); | 3823 | ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit); |
3824 | grp_blk_start = pa->pa_pstart - bit; | ||
3816 | BUG_ON(group != e4b->bd_group && pa->pa_len != 0); | 3825 | BUG_ON(group != e4b->bd_group && pa->pa_len != 0); |
3817 | end = bit + pa->pa_len; | 3826 | end = bit + pa->pa_len; |
3818 | 3827 | ||
@@ -3842,6 +3851,10 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh, | |||
3842 | ext4_mb_store_history(ac); | 3851 | ext4_mb_store_history(ac); |
3843 | } | 3852 | } |
3844 | 3853 | ||
3854 | trace_mark(ext4_mb_release_inode_pa, | ||
3855 | "dev %s ino %lu block %llu count %u", | ||
3856 | sb->s_id, pa->pa_inode->i_ino, grp_blk_start + bit, | ||
3857 | next - bit); | ||
3845 | mb_free_blocks(pa->pa_inode, e4b, bit, next - bit); | 3858 | mb_free_blocks(pa->pa_inode, e4b, bit, next - bit); |
3846 | bit = next + 1; | 3859 | bit = next + 1; |
3847 | } | 3860 | } |
@@ -3875,6 +3888,8 @@ ext4_mb_release_group_pa(struct ext4_buddy *e4b, | |||
3875 | if (ac) | 3888 | if (ac) |
3876 | ac->ac_op = EXT4_MB_HISTORY_DISCARD; | 3889 | ac->ac_op = EXT4_MB_HISTORY_DISCARD; |
3877 | 3890 | ||
3891 | trace_mark(ext4_mb_release_group_pa, "dev %s pstart %llu len %d", | ||
3892 | sb->s_id, pa->pa_pstart, pa->pa_len); | ||
3878 | BUG_ON(pa->pa_deleted == 0); | 3893 | BUG_ON(pa->pa_deleted == 0); |
3879 | ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit); | 3894 | ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, &bit); |
3880 | BUG_ON(group != e4b->bd_group && pa->pa_len != 0); | 3895 | BUG_ON(group != e4b->bd_group && pa->pa_len != 0); |
@@ -4040,6 +4055,8 @@ void ext4_discard_preallocations(struct inode *inode) | |||
4040 | } | 4055 | } |
4041 | 4056 | ||
4042 | mb_debug("discard preallocation for inode %lu\n", inode->i_ino); | 4057 | mb_debug("discard preallocation for inode %lu\n", inode->i_ino); |
4058 | trace_mark(ext4_discard_preallocations, "dev %s ino %lu", sb->s_id, | ||
4059 | inode->i_ino); | ||
4043 | 4060 | ||
4044 | INIT_LIST_HEAD(&list); | 4061 | INIT_LIST_HEAD(&list); |
4045 | 4062 | ||
@@ -4492,6 +4509,8 @@ static int ext4_mb_discard_preallocations(struct super_block *sb, int needed) | |||
4492 | int ret; | 4509 | int ret; |
4493 | int freed = 0; | 4510 | int freed = 0; |
4494 | 4511 | ||
4512 | trace_mark(ext4_mb_discard_preallocations, "dev %s needed %d", | ||
4513 | sb->s_id, needed); | ||
4495 | for (i = 0; i < EXT4_SB(sb)->s_groups_count && needed > 0; i++) { | 4514 | for (i = 0; i < EXT4_SB(sb)->s_groups_count && needed > 0; i++) { |
4496 | ret = ext4_mb_discard_group_preallocations(sb, i, needed); | 4515 | ret = ext4_mb_discard_group_preallocations(sb, i, needed); |
4497 | freed += ret; | 4516 | freed += ret; |
@@ -4520,6 +4539,18 @@ ext4_fsblk_t ext4_mb_new_blocks(handle_t *handle, | |||
4520 | sb = ar->inode->i_sb; | 4539 | sb = ar->inode->i_sb; |
4521 | sbi = EXT4_SB(sb); | 4540 | sbi = EXT4_SB(sb); |
4522 | 4541 | ||
4542 | trace_mark(ext4_request_blocks, "dev %s flags %u len %u ino %lu " | ||
4543 | "lblk %llu goal %llu lleft %llu lright %llu " | ||
4544 | "pleft %llu pright %llu ", | ||
4545 | sb->s_id, ar->flags, ar->len, | ||
4546 | ar->inode ? ar->inode->i_ino : 0, | ||
4547 | (unsigned long long) ar->logical, | ||
4548 | (unsigned long long) ar->goal, | ||
4549 | (unsigned long long) ar->lleft, | ||
4550 | (unsigned long long) ar->lright, | ||
4551 | (unsigned long long) ar->pleft, | ||
4552 | (unsigned long long) ar->pright); | ||
4553 | |||
4523 | if (!EXT4_I(ar->inode)->i_delalloc_reserved_flag) { | 4554 | if (!EXT4_I(ar->inode)->i_delalloc_reserved_flag) { |
4524 | /* | 4555 | /* |
4525 | * With delalloc we already reserved the blocks | 4556 | * With delalloc we already reserved the blocks |
@@ -4622,6 +4653,19 @@ out3: | |||
4622 | reserv_blks); | 4653 | reserv_blks); |
4623 | } | 4654 | } |
4624 | 4655 | ||
4656 | trace_mark(ext4_allocate_blocks, | ||
4657 | "dev %s block %llu flags %u len %u ino %lu " | ||
4658 | "logical %llu goal %llu lleft %llu lright %llu " | ||
4659 | "pleft %llu pright %llu ", | ||
4660 | sb->s_id, (unsigned long long) block, | ||
4661 | ar->flags, ar->len, ar->inode ? ar->inode->i_ino : 0, | ||
4662 | (unsigned long long) ar->logical, | ||
4663 | (unsigned long long) ar->goal, | ||
4664 | (unsigned long long) ar->lleft, | ||
4665 | (unsigned long long) ar->lright, | ||
4666 | (unsigned long long) ar->pleft, | ||
4667 | (unsigned long long) ar->pright); | ||
4668 | |||
4625 | return block; | 4669 | return block; |
4626 | } | 4670 | } |
4627 | 4671 | ||
@@ -4755,6 +4799,10 @@ void ext4_mb_free_blocks(handle_t *handle, struct inode *inode, | |||
4755 | } | 4799 | } |
4756 | 4800 | ||
4757 | ext4_debug("freeing block %lu\n", block); | 4801 | ext4_debug("freeing block %lu\n", block); |
4802 | trace_mark(ext4_free_blocks, | ||
4803 | "dev %s block %llu count %lu metadata %d ino %lu", | ||
4804 | sb->s_id, (unsigned long long) block, count, metadata, | ||
4805 | inode ? inode->i_ino : 0); | ||
4758 | 4806 | ||
4759 | ac = kmem_cache_alloc(ext4_ac_cachep, GFP_NOFS); | 4807 | ac = kmem_cache_alloc(ext4_ac_cachep, GFP_NOFS); |
4760 | if (ac) { | 4808 | if (ac) { |