Lines Matching refs:node

92 	struct btrfs_delayed_node *node;  in btrfs_get_delayed_node()  local
94 node = ACCESS_ONCE(btrfs_inode->delayed_node); in btrfs_get_delayed_node()
95 if (node) { in btrfs_get_delayed_node()
96 atomic_inc(&node->refs); in btrfs_get_delayed_node()
97 return node; in btrfs_get_delayed_node()
101 node = radix_tree_lookup(&root->delayed_nodes_tree, ino); in btrfs_get_delayed_node()
102 if (node) { in btrfs_get_delayed_node()
104 atomic_inc(&node->refs); /* can be accessed */ in btrfs_get_delayed_node()
105 BUG_ON(btrfs_inode->delayed_node != node); in btrfs_get_delayed_node()
107 return node; in btrfs_get_delayed_node()
109 btrfs_inode->delayed_node = node; in btrfs_get_delayed_node()
111 atomic_add(2, &node->refs); in btrfs_get_delayed_node()
113 return node; in btrfs_get_delayed_node()
124 struct btrfs_delayed_node *node; in btrfs_get_or_create_delayed_node() local
131 node = btrfs_get_delayed_node(inode); in btrfs_get_or_create_delayed_node()
132 if (node) in btrfs_get_or_create_delayed_node()
133 return node; in btrfs_get_or_create_delayed_node()
135 node = kmem_cache_alloc(delayed_node_cache, GFP_NOFS); in btrfs_get_or_create_delayed_node()
136 if (!node) in btrfs_get_or_create_delayed_node()
138 btrfs_init_delayed_node(node, root, ino); in btrfs_get_or_create_delayed_node()
141 atomic_add(2, &node->refs); in btrfs_get_or_create_delayed_node()
145 kmem_cache_free(delayed_node_cache, node); in btrfs_get_or_create_delayed_node()
150 ret = radix_tree_insert(&root->delayed_nodes_tree, ino, node); in btrfs_get_or_create_delayed_node()
153 kmem_cache_free(delayed_node_cache, node); in btrfs_get_or_create_delayed_node()
157 btrfs_inode->delayed_node = node; in btrfs_get_or_create_delayed_node()
161 return node; in btrfs_get_or_create_delayed_node()
170 struct btrfs_delayed_node *node, in btrfs_queue_delayed_node() argument
174 if (test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) { in btrfs_queue_delayed_node()
175 if (!list_empty(&node->p_list)) in btrfs_queue_delayed_node()
176 list_move_tail(&node->p_list, &root->prepare_list); in btrfs_queue_delayed_node()
178 list_add_tail(&node->p_list, &root->prepare_list); in btrfs_queue_delayed_node()
180 list_add_tail(&node->n_list, &root->node_list); in btrfs_queue_delayed_node()
181 list_add_tail(&node->p_list, &root->prepare_list); in btrfs_queue_delayed_node()
182 atomic_inc(&node->refs); /* inserted into list */ in btrfs_queue_delayed_node()
184 set_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags); in btrfs_queue_delayed_node()
191 struct btrfs_delayed_node *node) in btrfs_dequeue_delayed_node() argument
194 if (test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) { in btrfs_dequeue_delayed_node()
196 atomic_dec(&node->refs); /* not in the list */ in btrfs_dequeue_delayed_node()
197 list_del_init(&node->n_list); in btrfs_dequeue_delayed_node()
198 if (!list_empty(&node->p_list)) in btrfs_dequeue_delayed_node()
199 list_del_init(&node->p_list); in btrfs_dequeue_delayed_node()
200 clear_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags); in btrfs_dequeue_delayed_node()
209 struct btrfs_delayed_node *node = NULL; in btrfs_first_delayed_node() local
216 node = list_entry(p, struct btrfs_delayed_node, n_list); in btrfs_first_delayed_node()
217 atomic_inc(&node->refs); in btrfs_first_delayed_node()
221 return node; in btrfs_first_delayed_node()
225 struct btrfs_delayed_node *node) in btrfs_next_delayed_node() argument
231 delayed_root = node->root->fs_info->delayed_root; in btrfs_next_delayed_node()
233 if (!test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) { in btrfs_next_delayed_node()
238 } else if (list_is_last(&node->n_list, &delayed_root->node_list)) in btrfs_next_delayed_node()
241 p = node->n_list.next; in btrfs_next_delayed_node()
284 static inline void btrfs_release_delayed_node(struct btrfs_delayed_node *node) in btrfs_release_delayed_node() argument
286 __btrfs_release_delayed_node(node, 0); in btrfs_release_delayed_node()
293 struct btrfs_delayed_node *node = NULL; in btrfs_first_prepared_delayed_node() local
301 node = list_entry(p, struct btrfs_delayed_node, p_list); in btrfs_first_prepared_delayed_node()
302 atomic_inc(&node->refs); in btrfs_first_prepared_delayed_node()
306 return node; in btrfs_first_prepared_delayed_node()
310 struct btrfs_delayed_node *node) in btrfs_release_prepared_delayed_node() argument
312 __btrfs_release_delayed_node(node, 1); in btrfs_release_prepared_delayed_node()
345 struct rb_node *node, *prev_node = NULL; in __btrfs_lookup_delayed_item() local
349 node = root->rb_node; in __btrfs_lookup_delayed_item()
351 while (node) { in __btrfs_lookup_delayed_item()
352 delayed_item = rb_entry(node, struct btrfs_delayed_item, in __btrfs_lookup_delayed_item()
354 prev_node = node; in __btrfs_lookup_delayed_item()
357 node = node->rb_right; in __btrfs_lookup_delayed_item()
359 node = node->rb_left; in __btrfs_lookup_delayed_item()
369 else if ((node = rb_prev(prev_node)) != NULL) { in __btrfs_lookup_delayed_item()
370 *prev = rb_entry(node, struct btrfs_delayed_item, in __btrfs_lookup_delayed_item()
381 else if ((node = rb_next(prev_node)) != NULL) { in __btrfs_lookup_delayed_item()
382 *next = rb_entry(node, struct btrfs_delayed_item, in __btrfs_lookup_delayed_item()
405 struct rb_node **p, *node; in __btrfs_add_delayed_item() local
418 node = &ins->rb_node; in __btrfs_add_delayed_item()
434 rb_link_node(node, parent_node, p); in __btrfs_add_delayed_item()
435 rb_insert_color(node, root); in __btrfs_add_delayed_item()
449 static int __btrfs_add_delayed_insertion_item(struct btrfs_delayed_node *node, in __btrfs_add_delayed_insertion_item() argument
452 return __btrfs_add_delayed_item(node, item, in __btrfs_add_delayed_insertion_item()
456 static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node, in __btrfs_add_delayed_deletion_item() argument
459 return __btrfs_add_delayed_item(node, item, in __btrfs_add_delayed_deletion_item()
589 struct btrfs_delayed_node *node) in btrfs_delayed_inode_reserve_metadata() argument
624 node->bytes_reserved = num_bytes; in btrfs_delayed_inode_reserve_metadata()
687 node->bytes_reserved = num_bytes; in btrfs_delayed_inode_reserve_metadata()
700 struct btrfs_delayed_node *node) in btrfs_delayed_inode_release_metadata() argument
704 if (!node->bytes_reserved) in btrfs_delayed_inode_release_metadata()
709 node->inode_id, node->bytes_reserved, 0); in btrfs_delayed_inode_release_metadata()
711 node->bytes_reserved); in btrfs_delayed_inode_release_metadata()
712 node->bytes_reserved = 0; in btrfs_delayed_inode_release_metadata()
862 struct btrfs_delayed_node *node) in btrfs_insert_delayed_items() argument
868 mutex_lock(&node->mutex); in btrfs_insert_delayed_items()
869 curr = __btrfs_first_delayed_insertion_item(node); in btrfs_insert_delayed_items()
890 mutex_unlock(&node->mutex); in btrfs_insert_delayed_items()
894 mutex_unlock(&node->mutex); in btrfs_insert_delayed_items()
964 struct btrfs_delayed_node *node) in btrfs_delete_delayed_items() argument
970 mutex_lock(&node->mutex); in btrfs_delete_delayed_items()
971 curr = __btrfs_first_delayed_deletion_item(node); in btrfs_delete_delayed_items()
989 mutex_unlock(&node->mutex); in btrfs_delete_delayed_items()
997 mutex_unlock(&node->mutex); in btrfs_delete_delayed_items()
1002 mutex_unlock(&node->mutex); in btrfs_delete_delayed_items()
1036 struct btrfs_delayed_node *node) in __btrfs_update_delayed_inode() argument
1044 key.objectid = node->inode_id; in __btrfs_update_delayed_inode()
1048 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &node->flags)) in __btrfs_update_delayed_inode()
1064 write_extent_buffer(leaf, &node->inode_item, (unsigned long)inode_item, in __btrfs_update_delayed_inode()
1068 if (!test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &node->flags)) in __btrfs_update_delayed_inode()
1076 if (key.objectid != node->inode_id) in __btrfs_update_delayed_inode()
1090 btrfs_release_delayed_iref(node); in __btrfs_update_delayed_inode()
1094 btrfs_delayed_inode_release_metadata(root, node); in __btrfs_update_delayed_inode()
1095 btrfs_release_delayed_inode(node); in __btrfs_update_delayed_inode()
1118 struct btrfs_delayed_node *node) in btrfs_update_delayed_inode() argument
1122 mutex_lock(&node->mutex); in btrfs_update_delayed_inode()
1123 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &node->flags)) { in btrfs_update_delayed_inode()
1124 mutex_unlock(&node->mutex); in btrfs_update_delayed_inode()
1128 ret = __btrfs_update_delayed_inode(trans, root, path, node); in btrfs_update_delayed_inode()
1129 mutex_unlock(&node->mutex); in btrfs_update_delayed_inode()
1136 struct btrfs_delayed_node *node) in __btrfs_commit_inode_delayed_items() argument
1140 ret = btrfs_insert_delayed_items(trans, path, node->root, node); in __btrfs_commit_inode_delayed_items()
1144 ret = btrfs_delete_delayed_items(trans, path, node->root, node); in __btrfs_commit_inode_delayed_items()
1148 ret = btrfs_update_delayed_inode(trans, node->root, path, node); in __btrfs_commit_inode_delayed_items()
1514 struct btrfs_delayed_node *node, in btrfs_delete_delayed_insertion_item() argument
1519 mutex_lock(&node->mutex); in btrfs_delete_delayed_insertion_item()
1520 item = __btrfs_lookup_delayed_insertion_item(node, key); in btrfs_delete_delayed_insertion_item()
1522 mutex_unlock(&node->mutex); in btrfs_delete_delayed_insertion_item()
1528 mutex_unlock(&node->mutex); in btrfs_delete_delayed_insertion_item()
1536 struct btrfs_delayed_node *node; in btrfs_delete_delayed_dir_index() local
1541 node = btrfs_get_or_create_delayed_node(dir); in btrfs_delete_delayed_dir_index()
1542 if (IS_ERR(node)) in btrfs_delete_delayed_dir_index()
1543 return PTR_ERR(node); in btrfs_delete_delayed_dir_index()
1549 ret = btrfs_delete_delayed_insertion_item(root, node, &item_key); in btrfs_delete_delayed_dir_index()
1568 mutex_lock(&node->mutex); in btrfs_delete_delayed_dir_index()
1569 ret = __btrfs_add_delayed_deletion_item(node, item); in btrfs_delete_delayed_dir_index()
1574 index, node->root->objectid, node->inode_id, in btrfs_delete_delayed_dir_index()
1578 mutex_unlock(&node->mutex); in btrfs_delete_delayed_dir_index()
1580 btrfs_release_delayed_node(node); in btrfs_delete_delayed_dir_index()