aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs/extent_cache.c
diff options
context:
space:
mode:
authorChao Yu <chao2.yu@samsung.com>2016-01-08 07:22:52 -0500
committerJaegeuk Kim <jaegeuk@kernel.org>2016-01-08 14:57:11 -0500
commit68e353851002dc07555b067a0baff1cc2f709c04 (patch)
tree702bfaa3ff203a120cb550550d41aef77c636952 /fs/f2fs/extent_cache.c
parentda5af127a1a17bac121c6889c88cc90f8a278a84 (diff)
f2fs: use atomic type for node count in extent tree
1. rename field in struct extent_tree from count to node_cnt for readability. 2. alter to use atomic type for node_cnt. Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/extent_cache.c')
-rw-r--r--fs/f2fs/extent_cache.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/fs/f2fs/extent_cache.c b/fs/f2fs/extent_cache.c
index 4dee2be9a648..9febbc622bf5 100644
--- a/fs/f2fs/extent_cache.c
+++ b/fs/f2fs/extent_cache.c
@@ -36,7 +36,7 @@ static struct extent_node *__attach_extent_node(struct f2fs_sb_info *sbi,
36 36
37 rb_link_node(&en->rb_node, parent, p); 37 rb_link_node(&en->rb_node, parent, p);
38 rb_insert_color(&en->rb_node, &et->root); 38 rb_insert_color(&en->rb_node, &et->root);
39 et->count++; 39 atomic_inc(&et->node_cnt);
40 atomic_inc(&sbi->total_ext_node); 40 atomic_inc(&sbi->total_ext_node);
41 return en; 41 return en;
42} 42}
@@ -45,7 +45,7 @@ static void __detach_extent_node(struct f2fs_sb_info *sbi,
45 struct extent_tree *et, struct extent_node *en) 45 struct extent_tree *et, struct extent_node *en)
46{ 46{
47 rb_erase(&en->rb_node, &et->root); 47 rb_erase(&en->rb_node, &et->root);
48 et->count--; 48 atomic_dec(&et->node_cnt);
49 atomic_dec(&sbi->total_ext_node); 49 atomic_dec(&sbi->total_ext_node);
50 50
51 if (et->cached_en == en) 51 if (et->cached_en == en)
@@ -69,7 +69,7 @@ static struct extent_tree *__grab_extent_tree(struct inode *inode)
69 et->cached_en = NULL; 69 et->cached_en = NULL;
70 rwlock_init(&et->lock); 70 rwlock_init(&et->lock);
71 INIT_LIST_HEAD(&et->list); 71 INIT_LIST_HEAD(&et->list);
72 et->count = 0; 72 atomic_set(&et->node_cnt, 0);
73 atomic_inc(&sbi->total_ext_tree); 73 atomic_inc(&sbi->total_ext_tree);
74 } else { 74 } else {
75 atomic_dec(&sbi->total_zombie_tree); 75 atomic_dec(&sbi->total_zombie_tree);
@@ -133,7 +133,7 @@ static unsigned int __free_extent_tree(struct f2fs_sb_info *sbi,
133{ 133{
134 struct rb_node *node, *next; 134 struct rb_node *node, *next;
135 struct extent_node *en; 135 struct extent_node *en;
136 unsigned int count = et->count; 136 unsigned int count = atomic_read(&et->node_cnt);
137 137
138 node = rb_first(&et->root); 138 node = rb_first(&et->root);
139 while (node) { 139 while (node) {
@@ -154,7 +154,7 @@ static unsigned int __free_extent_tree(struct f2fs_sb_info *sbi,
154 node = next; 154 node = next;
155 } 155 }
156 156
157 return count - et->count; 157 return count - atomic_read(&et->node_cnt);
158} 158}
159 159
160static void __drop_largest_extent(struct inode *inode, 160static void __drop_largest_extent(struct inode *inode,
@@ -192,7 +192,7 @@ bool f2fs_init_extent_tree(struct inode *inode, struct f2fs_extent *i_ext)
192 le32_to_cpu(i_ext->blk), le32_to_cpu(i_ext->len)); 192 le32_to_cpu(i_ext->blk), le32_to_cpu(i_ext->len));
193 193
194 write_lock(&et->lock); 194 write_lock(&et->lock);
195 if (et->count) 195 if (atomic_read(&et->node_cnt))
196 goto out; 196 goto out;
197 197
198 en = __init_extent_tree(sbi, et, &ei); 198 en = __init_extent_tree(sbi, et, &ei);
@@ -660,7 +660,8 @@ void f2fs_destroy_extent_tree(struct inode *inode)
660 if (!et) 660 if (!et)
661 return; 661 return;
662 662
663 if (inode->i_nlink && !is_bad_inode(inode) && et->count) { 663 if (inode->i_nlink && !is_bad_inode(inode) &&
664 atomic_read(&et->node_cnt)) {
664 down_write(&sbi->extent_tree_lock); 665 down_write(&sbi->extent_tree_lock);
665 list_add_tail(&et->list, &sbi->zombie_list); 666 list_add_tail(&et->list, &sbi->zombie_list);
666 atomic_inc(&sbi->total_zombie_tree); 667 atomic_inc(&sbi->total_zombie_tree);
@@ -673,7 +674,7 @@ void f2fs_destroy_extent_tree(struct inode *inode)
673 674
674 /* delete extent tree entry in radix tree */ 675 /* delete extent tree entry in radix tree */
675 down_write(&sbi->extent_tree_lock); 676 down_write(&sbi->extent_tree_lock);
676 f2fs_bug_on(sbi, et->count); 677 f2fs_bug_on(sbi, atomic_read(&et->node_cnt));
677 radix_tree_delete(&sbi->extent_tree_root, inode->i_ino); 678 radix_tree_delete(&sbi->extent_tree_root, inode->i_ino);
678 kmem_cache_free(extent_tree_slab, et); 679 kmem_cache_free(extent_tree_slab, et);
679 atomic_dec(&sbi->total_ext_tree); 680 atomic_dec(&sbi->total_ext_tree);