aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/delayed-inode.c
diff options
context:
space:
mode:
authorMiao Xie <miaox@cn.fujitsu.com>2013-12-26 00:07:05 -0500
committerChris Mason <clm@fb.com>2014-01-28 16:20:08 -0500
commit7cf35d91b4f143b5c7529976bf5e7573a07051cd (patch)
tree9a6b5663009bdf5812018d1d7587147478875bfd /fs/btrfs/delayed-inode.c
parenta56dbd89400dd2cb9c91d734435dbfe059495da1 (diff)
Btrfs: use flags instead of the bool variants in delayed node
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/delayed-inode.c')
-rw-r--r--fs/btrfs/delayed-inode.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
index 826a26053c70..222ca8cdc53a 100644
--- a/fs/btrfs/delayed-inode.c
+++ b/fs/btrfs/delayed-inode.c
@@ -55,8 +55,7 @@ static inline void btrfs_init_delayed_node(
55 delayed_node->inode_id = inode_id; 55 delayed_node->inode_id = inode_id;
56 atomic_set(&delayed_node->refs, 0); 56 atomic_set(&delayed_node->refs, 0);
57 delayed_node->count = 0; 57 delayed_node->count = 0;
58 delayed_node->in_list = 0; 58 delayed_node->flags = 0;
59 delayed_node->inode_dirty = 0;
60 delayed_node->ins_root = RB_ROOT; 59 delayed_node->ins_root = RB_ROOT;
61 delayed_node->del_root = RB_ROOT; 60 delayed_node->del_root = RB_ROOT;
62 mutex_init(&delayed_node->mutex); 61 mutex_init(&delayed_node->mutex);
@@ -172,7 +171,7 @@ static void btrfs_queue_delayed_node(struct btrfs_delayed_root *root,
172 int mod) 171 int mod)
173{ 172{
174 spin_lock(&root->lock); 173 spin_lock(&root->lock);
175 if (node->in_list) { 174 if (test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) {
176 if (!list_empty(&node->p_list)) 175 if (!list_empty(&node->p_list))
177 list_move_tail(&node->p_list, &root->prepare_list); 176 list_move_tail(&node->p_list, &root->prepare_list);
178 else if (mod) 177 else if (mod)
@@ -182,7 +181,7 @@ static void btrfs_queue_delayed_node(struct btrfs_delayed_root *root,
182 list_add_tail(&node->p_list, &root->prepare_list); 181 list_add_tail(&node->p_list, &root->prepare_list);
183 atomic_inc(&node->refs); /* inserted into list */ 182 atomic_inc(&node->refs); /* inserted into list */
184 root->nodes++; 183 root->nodes++;
185 node->in_list = 1; 184 set_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags);
186 } 185 }
187 spin_unlock(&root->lock); 186 spin_unlock(&root->lock);
188} 187}
@@ -192,13 +191,13 @@ static void btrfs_dequeue_delayed_node(struct btrfs_delayed_root *root,
192 struct btrfs_delayed_node *node) 191 struct btrfs_delayed_node *node)
193{ 192{
194 spin_lock(&root->lock); 193 spin_lock(&root->lock);
195 if (node->in_list) { 194 if (test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) {
196 root->nodes--; 195 root->nodes--;
197 atomic_dec(&node->refs); /* not in the list */ 196 atomic_dec(&node->refs); /* not in the list */
198 list_del_init(&node->n_list); 197 list_del_init(&node->n_list);
199 if (!list_empty(&node->p_list)) 198 if (!list_empty(&node->p_list))
200 list_del_init(&node->p_list); 199 list_del_init(&node->p_list);
201 node->in_list = 0; 200 clear_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags);
202 } 201 }
203 spin_unlock(&root->lock); 202 spin_unlock(&root->lock);
204} 203}
@@ -231,7 +230,8 @@ static struct btrfs_delayed_node *btrfs_next_delayed_node(
231 230
232 delayed_root = node->root->fs_info->delayed_root; 231 delayed_root = node->root->fs_info->delayed_root;
233 spin_lock(&delayed_root->lock); 232 spin_lock(&delayed_root->lock);
234 if (!node->in_list) { /* not in the list */ 233 if (!test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) {
234 /* not in the list */
235 if (list_empty(&delayed_root->node_list)) 235 if (list_empty(&delayed_root->node_list))
236 goto out; 236 goto out;
237 p = delayed_root->node_list.next; 237 p = delayed_root->node_list.next;
@@ -1004,9 +1004,10 @@ static void btrfs_release_delayed_inode(struct btrfs_delayed_node *delayed_node)
1004{ 1004{
1005 struct btrfs_delayed_root *delayed_root; 1005 struct btrfs_delayed_root *delayed_root;
1006 1006
1007 if (delayed_node && delayed_node->inode_dirty) { 1007 if (delayed_node &&
1008 test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1008 BUG_ON(!delayed_node->root); 1009 BUG_ON(!delayed_node->root);
1009 delayed_node->inode_dirty = 0; 1010 clear_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags);
1010 delayed_node->count--; 1011 delayed_node->count--;
1011 1012
1012 delayed_root = delayed_node->root->fs_info->delayed_root; 1013 delayed_root = delayed_node->root->fs_info->delayed_root;
@@ -1059,7 +1060,7 @@ static inline int btrfs_update_delayed_inode(struct btrfs_trans_handle *trans,
1059 int ret; 1060 int ret;
1060 1061
1061 mutex_lock(&node->mutex); 1062 mutex_lock(&node->mutex);
1062 if (!node->inode_dirty) { 1063 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &node->flags)) {
1063 mutex_unlock(&node->mutex); 1064 mutex_unlock(&node->mutex);
1064 return 0; 1065 return 0;
1065 } 1066 }
@@ -1203,7 +1204,7 @@ int btrfs_commit_inode_delayed_inode(struct inode *inode)
1203 return 0; 1204 return 0;
1204 1205
1205 mutex_lock(&delayed_node->mutex); 1206 mutex_lock(&delayed_node->mutex);
1206 if (!delayed_node->inode_dirty) { 1207 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1207 mutex_unlock(&delayed_node->mutex); 1208 mutex_unlock(&delayed_node->mutex);
1208 btrfs_release_delayed_node(delayed_node); 1209 btrfs_release_delayed_node(delayed_node);
1209 return 0; 1210 return 0;
@@ -1227,7 +1228,7 @@ int btrfs_commit_inode_delayed_inode(struct inode *inode)
1227 trans->block_rsv = &delayed_node->root->fs_info->delayed_block_rsv; 1228 trans->block_rsv = &delayed_node->root->fs_info->delayed_block_rsv;
1228 1229
1229 mutex_lock(&delayed_node->mutex); 1230 mutex_lock(&delayed_node->mutex);
1230 if (delayed_node->inode_dirty) 1231 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags))
1231 ret = __btrfs_update_delayed_inode(trans, delayed_node->root, 1232 ret = __btrfs_update_delayed_inode(trans, delayed_node->root,
1232 path, delayed_node); 1233 path, delayed_node);
1233 else 1234 else
@@ -1721,7 +1722,7 @@ int btrfs_fill_inode(struct inode *inode, u32 *rdev)
1721 return -ENOENT; 1722 return -ENOENT;
1722 1723
1723 mutex_lock(&delayed_node->mutex); 1724 mutex_lock(&delayed_node->mutex);
1724 if (!delayed_node->inode_dirty) { 1725 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1725 mutex_unlock(&delayed_node->mutex); 1726 mutex_unlock(&delayed_node->mutex);
1726 btrfs_release_delayed_node(delayed_node); 1727 btrfs_release_delayed_node(delayed_node);
1727 return -ENOENT; 1728 return -ENOENT;
@@ -1772,7 +1773,7 @@ int btrfs_delayed_update_inode(struct btrfs_trans_handle *trans,
1772 return PTR_ERR(delayed_node); 1773 return PTR_ERR(delayed_node);
1773 1774
1774 mutex_lock(&delayed_node->mutex); 1775 mutex_lock(&delayed_node->mutex);
1775 if (delayed_node->inode_dirty) { 1776 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1776 fill_stack_inode_item(trans, &delayed_node->inode_item, inode); 1777 fill_stack_inode_item(trans, &delayed_node->inode_item, inode);
1777 goto release_node; 1778 goto release_node;
1778 } 1779 }
@@ -1783,7 +1784,7 @@ int btrfs_delayed_update_inode(struct btrfs_trans_handle *trans,
1783 goto release_node; 1784 goto release_node;
1784 1785
1785 fill_stack_inode_item(trans, &delayed_node->inode_item, inode); 1786 fill_stack_inode_item(trans, &delayed_node->inode_item, inode);
1786 delayed_node->inode_dirty = 1; 1787 set_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags);
1787 delayed_node->count++; 1788 delayed_node->count++;
1788 atomic_inc(&root->fs_info->delayed_root->items); 1789 atomic_inc(&root->fs_info->delayed_root->items);
1789release_node: 1790release_node:
@@ -1814,7 +1815,7 @@ static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node)
1814 btrfs_release_delayed_item(prev_item); 1815 btrfs_release_delayed_item(prev_item);
1815 } 1816 }
1816 1817
1817 if (delayed_node->inode_dirty) { 1818 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1818 btrfs_delayed_inode_release_metadata(root, delayed_node); 1819 btrfs_delayed_inode_release_metadata(root, delayed_node);
1819 btrfs_release_delayed_inode(delayed_node); 1820 btrfs_release_delayed_inode(delayed_node);
1820 } 1821 }