diff options
author | Jiaying Zhang <jiayingz@google.com> | 2011-03-21 21:38:05 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2011-03-21 21:38:05 -0400 |
commit | 0562e0bad483d10e9651fbb8f21dc3d0bad57374 (patch) | |
tree | 19f6597f92c028badcb6df360ccac22240378e25 /fs/ext4/inode.c | |
parent | 4596fe07679ff0fae904515691ea747467614871 (diff) |
ext4: add more tracepoints and use dev_t in the trace buffer
- Add more ext4 tracepoints.
- Change ext4 tracepoints to use dev_t field with MAJOR/MINOR macros
so that we can save 4 bytes in the ring buffer on some platforms.
- Add sync_mode to ext4_da_writepages, ext4_da_write_pages, and
ext4_da_writepages_result tracepoints. Also remove for_reclaim
field from ext4_da_writepages since it is usually not very useful.
Signed-off-by: Jiaying Zhang <jiayingz@google.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/inode.c')
-rw-r--r-- | fs/ext4/inode.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index fc8c0ce84315..f44307a21136 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c | |||
@@ -973,6 +973,7 @@ static int ext4_ind_map_blocks(handle_t *handle, struct inode *inode, | |||
973 | int count = 0; | 973 | int count = 0; |
974 | ext4_fsblk_t first_block = 0; | 974 | ext4_fsblk_t first_block = 0; |
975 | 975 | ||
976 | trace_ext4_ind_map_blocks_enter(inode, map->m_lblk, map->m_len, flags); | ||
976 | J_ASSERT(!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))); | 977 | J_ASSERT(!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))); |
977 | J_ASSERT(handle != NULL || (flags & EXT4_GET_BLOCKS_CREATE) == 0); | 978 | J_ASSERT(handle != NULL || (flags & EXT4_GET_BLOCKS_CREATE) == 0); |
978 | depth = ext4_block_to_path(inode, map->m_lblk, offsets, | 979 | depth = ext4_block_to_path(inode, map->m_lblk, offsets, |
@@ -1058,6 +1059,8 @@ cleanup: | |||
1058 | partial--; | 1059 | partial--; |
1059 | } | 1060 | } |
1060 | out: | 1061 | out: |
1062 | trace_ext4_ind_map_blocks_exit(inode, map->m_lblk, | ||
1063 | map->m_pblk, map->m_len, err); | ||
1061 | return err; | 1064 | return err; |
1062 | } | 1065 | } |
1063 | 1066 | ||
@@ -3379,6 +3382,7 @@ static sector_t ext4_bmap(struct address_space *mapping, sector_t block) | |||
3379 | 3382 | ||
3380 | static int ext4_readpage(struct file *file, struct page *page) | 3383 | static int ext4_readpage(struct file *file, struct page *page) |
3381 | { | 3384 | { |
3385 | trace_ext4_readpage(page); | ||
3382 | return mpage_readpage(page, ext4_get_block); | 3386 | return mpage_readpage(page, ext4_get_block); |
3383 | } | 3387 | } |
3384 | 3388 | ||
@@ -3413,6 +3417,8 @@ static void ext4_invalidatepage(struct page *page, unsigned long offset) | |||
3413 | { | 3417 | { |
3414 | journal_t *journal = EXT4_JOURNAL(page->mapping->host); | 3418 | journal_t *journal = EXT4_JOURNAL(page->mapping->host); |
3415 | 3419 | ||
3420 | trace_ext4_invalidatepage(page, offset); | ||
3421 | |||
3416 | /* | 3422 | /* |
3417 | * free any io_end structure allocated for buffers to be discarded | 3423 | * free any io_end structure allocated for buffers to be discarded |
3418 | */ | 3424 | */ |
@@ -3434,6 +3440,8 @@ static int ext4_releasepage(struct page *page, gfp_t wait) | |||
3434 | { | 3440 | { |
3435 | journal_t *journal = EXT4_JOURNAL(page->mapping->host); | 3441 | journal_t *journal = EXT4_JOURNAL(page->mapping->host); |
3436 | 3442 | ||
3443 | trace_ext4_releasepage(page); | ||
3444 | |||
3437 | WARN_ON(PageChecked(page)); | 3445 | WARN_ON(PageChecked(page)); |
3438 | if (!page_has_buffers(page)) | 3446 | if (!page_has_buffers(page)) |
3439 | return 0; | 3447 | return 0; |
@@ -3792,11 +3800,16 @@ static ssize_t ext4_direct_IO(int rw, struct kiocb *iocb, | |||
3792 | { | 3800 | { |
3793 | struct file *file = iocb->ki_filp; | 3801 | struct file *file = iocb->ki_filp; |
3794 | struct inode *inode = file->f_mapping->host; | 3802 | struct inode *inode = file->f_mapping->host; |
3803 | ssize_t ret; | ||
3795 | 3804 | ||
3805 | trace_ext4_direct_IO_enter(inode, offset, iov_length(iov, nr_segs), rw); | ||
3796 | if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) | 3806 | if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) |
3797 | return ext4_ext_direct_IO(rw, iocb, iov, offset, nr_segs); | 3807 | ret = ext4_ext_direct_IO(rw, iocb, iov, offset, nr_segs); |
3798 | 3808 | else | |
3799 | return ext4_ind_direct_IO(rw, iocb, iov, offset, nr_segs); | 3809 | ret = ext4_ind_direct_IO(rw, iocb, iov, offset, nr_segs); |
3810 | trace_ext4_direct_IO_exit(inode, offset, | ||
3811 | iov_length(iov, nr_segs), rw, ret); | ||
3812 | return ret; | ||
3800 | } | 3813 | } |
3801 | 3814 | ||
3802 | /* | 3815 | /* |
@@ -4425,6 +4438,8 @@ void ext4_truncate(struct inode *inode) | |||
4425 | ext4_lblk_t last_block; | 4438 | ext4_lblk_t last_block; |
4426 | unsigned blocksize = inode->i_sb->s_blocksize; | 4439 | unsigned blocksize = inode->i_sb->s_blocksize; |
4427 | 4440 | ||
4441 | trace_ext4_truncate_enter(inode); | ||
4442 | |||
4428 | if (!ext4_can_truncate(inode)) | 4443 | if (!ext4_can_truncate(inode)) |
4429 | return; | 4444 | return; |
4430 | 4445 | ||
@@ -4435,6 +4450,7 @@ void ext4_truncate(struct inode *inode) | |||
4435 | 4450 | ||
4436 | if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) { | 4451 | if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) { |
4437 | ext4_ext_truncate(inode); | 4452 | ext4_ext_truncate(inode); |
4453 | trace_ext4_truncate_exit(inode); | ||
4438 | return; | 4454 | return; |
4439 | } | 4455 | } |
4440 | 4456 | ||
@@ -4564,6 +4580,7 @@ out_stop: | |||
4564 | ext4_orphan_del(handle, inode); | 4580 | ext4_orphan_del(handle, inode); |
4565 | 4581 | ||
4566 | ext4_journal_stop(handle); | 4582 | ext4_journal_stop(handle); |
4583 | trace_ext4_truncate_exit(inode); | ||
4567 | } | 4584 | } |
4568 | 4585 | ||
4569 | /* | 4586 | /* |
@@ -4695,6 +4712,7 @@ make_io: | |||
4695 | * has in-inode xattrs, or we don't have this inode in memory. | 4712 | * has in-inode xattrs, or we don't have this inode in memory. |
4696 | * Read the block from disk. | 4713 | * Read the block from disk. |
4697 | */ | 4714 | */ |
4715 | trace_ext4_load_inode(inode); | ||
4698 | get_bh(bh); | 4716 | get_bh(bh); |
4699 | bh->b_end_io = end_buffer_read_sync; | 4717 | bh->b_end_io = end_buffer_read_sync; |
4700 | submit_bh(READ_META, bh); | 4718 | submit_bh(READ_META, bh); |