aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs/data.c
diff options
context:
space:
mode:
authorChao Yu <chao2.yu@samsung.com>2015-02-05 04:59:59 -0500
committerJaegeuk Kim <jaegeuk@kernel.org>2015-03-03 12:58:47 -0500
commit1ec4610c522cc51219cc022ef120a928828fa934 (patch)
treebb287725a378bd5ebc4474bab98e2e95708ee527 /fs/f2fs/data.c
parent4bf6fd9fedf14a8bab75f3710cd63e7bc8928014 (diff)
f2fs: add trace for rb-tree extent cache ops
This patch adds trace for lookup/update/shrink/destroy ops in rb-tree extent cache. Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/data.c')
-rw-r--r--fs/f2fs/data.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index acdc0767f77c..d7ff4ca5be18 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -533,6 +533,8 @@ static bool f2fs_lookup_extent_tree(struct inode *inode, pgoff_t pgofs,
533 if (is_inode_flag_set(F2FS_I(inode), FI_NO_EXTENT)) 533 if (is_inode_flag_set(F2FS_I(inode), FI_NO_EXTENT))
534 return false; 534 return false;
535 535
536 trace_f2fs_lookup_extent_tree_start(inode, pgofs);
537
536 down_read(&sbi->extent_tree_lock); 538 down_read(&sbi->extent_tree_lock);
537 et = radix_tree_lookup(&sbi->extent_tree_root, inode->i_ino); 539 et = radix_tree_lookup(&sbi->extent_tree_root, inode->i_ino);
538 if (!et) { 540 if (!et) {
@@ -555,6 +557,8 @@ static bool f2fs_lookup_extent_tree(struct inode *inode, pgoff_t pgofs,
555 stat_inc_total_hit(sbi->sb); 557 stat_inc_total_hit(sbi->sb);
556 read_unlock(&et->lock); 558 read_unlock(&et->lock);
557 559
560 trace_f2fs_lookup_extent_tree_end(inode, pgofs, en);
561
558 atomic_dec(&et->refcount); 562 atomic_dec(&et->refcount);
559 return en ? true : false; 563 return en ? true : false;
560} 564}
@@ -573,6 +577,8 @@ static void f2fs_update_extent_tree(struct inode *inode, pgoff_t fofs,
573 if (is_inode_flag_set(F2FS_I(inode), FI_NO_EXTENT)) 577 if (is_inode_flag_set(F2FS_I(inode), FI_NO_EXTENT))
574 return; 578 return;
575 579
580 trace_f2fs_update_extent_tree(inode, fofs, blkaddr);
581
576 down_write(&sbi->extent_tree_lock); 582 down_write(&sbi->extent_tree_lock);
577 et = radix_tree_lookup(&sbi->extent_tree_root, ino); 583 et = radix_tree_lookup(&sbi->extent_tree_root, ino);
578 if (!et) { 584 if (!et) {
@@ -665,6 +671,7 @@ void f2fs_shrink_extent_tree(struct f2fs_sb_info *sbi, int nr_shrink)
665 struct radix_tree_iter iter; 671 struct radix_tree_iter iter;
666 void **slot; 672 void **slot;
667 unsigned int found; 673 unsigned int found;
674 unsigned int node_cnt = 0, tree_cnt = 0;
668 675
669 if (!test_opt(sbi, EXTENT_CACHE)) 676 if (!test_opt(sbi, EXTENT_CACHE))
670 return; 677 return;
@@ -691,7 +698,7 @@ void f2fs_shrink_extent_tree(struct f2fs_sb_info *sbi, int nr_shrink)
691 698
692 atomic_inc(&et->refcount); 699 atomic_inc(&et->refcount);
693 write_lock(&et->lock); 700 write_lock(&et->lock);
694 __free_extent_tree(sbi, et, false); 701 node_cnt += __free_extent_tree(sbi, et, false);
695 write_unlock(&et->lock); 702 write_unlock(&et->lock);
696 atomic_dec(&et->refcount); 703 atomic_dec(&et->refcount);
697 } 704 }
@@ -707,15 +714,19 @@ void f2fs_shrink_extent_tree(struct f2fs_sb_info *sbi, int nr_shrink)
707 radix_tree_delete(&sbi->extent_tree_root, et->ino); 714 radix_tree_delete(&sbi->extent_tree_root, et->ino);
708 kmem_cache_free(extent_tree_slab, et); 715 kmem_cache_free(extent_tree_slab, et);
709 sbi->total_ext_tree--; 716 sbi->total_ext_tree--;
717 tree_cnt++;
710 } 718 }
711 } 719 }
712 up_write(&sbi->extent_tree_lock); 720 up_write(&sbi->extent_tree_lock);
721
722 trace_f2fs_shrink_extent_tree(sbi, node_cnt, tree_cnt);
713} 723}
714 724
715void f2fs_destroy_extent_tree(struct inode *inode) 725void f2fs_destroy_extent_tree(struct inode *inode)
716{ 726{
717 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); 727 struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
718 struct extent_tree *et; 728 struct extent_tree *et;
729 unsigned int node_cnt = 0;
719 730
720 if (!test_opt(sbi, EXTENT_CACHE)) 731 if (!test_opt(sbi, EXTENT_CACHE))
721 return; 732 return;
@@ -731,7 +742,7 @@ void f2fs_destroy_extent_tree(struct inode *inode)
731 742
732 /* free all extent info belong to this extent tree */ 743 /* free all extent info belong to this extent tree */
733 write_lock(&et->lock); 744 write_lock(&et->lock);
734 __free_extent_tree(sbi, et, true); 745 node_cnt = __free_extent_tree(sbi, et, true);
735 write_unlock(&et->lock); 746 write_unlock(&et->lock);
736 747
737 atomic_dec(&et->refcount); 748 atomic_dec(&et->refcount);
@@ -749,6 +760,7 @@ void f2fs_destroy_extent_tree(struct inode *inode)
749 sbi->total_ext_tree--; 760 sbi->total_ext_tree--;
750 up_write(&sbi->extent_tree_lock); 761 up_write(&sbi->extent_tree_lock);
751out: 762out:
763 trace_f2fs_destroy_extent_tree(inode, node_cnt);
752 return; 764 return;
753} 765}
754 766