Lines Matching refs:node
71 struct btrfs_delayed_node *node; in btrfs_get_delayed_node() local
73 node = READ_ONCE(btrfs_inode->delayed_node); in btrfs_get_delayed_node()
74 if (node) { in btrfs_get_delayed_node()
75 refcount_inc(&node->refs); in btrfs_get_delayed_node()
76 return node; in btrfs_get_delayed_node()
80 node = radix_tree_lookup(&root->delayed_nodes_tree, ino); in btrfs_get_delayed_node()
82 if (node) { in btrfs_get_delayed_node()
84 refcount_inc(&node->refs); /* can be accessed */ in btrfs_get_delayed_node()
85 BUG_ON(btrfs_inode->delayed_node != node); in btrfs_get_delayed_node()
87 return node; in btrfs_get_delayed_node()
106 if (refcount_inc_not_zero(&node->refs)) { in btrfs_get_delayed_node()
107 refcount_inc(&node->refs); in btrfs_get_delayed_node()
108 btrfs_inode->delayed_node = node; in btrfs_get_delayed_node()
110 node = NULL; in btrfs_get_delayed_node()
114 return node; in btrfs_get_delayed_node()
125 struct btrfs_delayed_node *node; in btrfs_get_or_create_delayed_node() local
131 node = btrfs_get_delayed_node(btrfs_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_zalloc(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 refcount_set(&node->refs, 2); 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 refcount_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 refcount_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 refcount_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()
285 static inline void btrfs_release_delayed_node(struct btrfs_delayed_node *node) in btrfs_release_delayed_node() argument
287 __btrfs_release_delayed_node(node, 0); in btrfs_release_delayed_node()
294 struct btrfs_delayed_node *node = NULL; in btrfs_first_prepared_delayed_node() local
302 node = list_entry(p, struct btrfs_delayed_node, p_list); in btrfs_first_prepared_delayed_node()
303 refcount_inc(&node->refs); in btrfs_first_prepared_delayed_node()
307 return node; in btrfs_first_prepared_delayed_node()
311 struct btrfs_delayed_node *node) in btrfs_release_prepared_delayed_node() argument
313 __btrfs_release_delayed_node(node, 1); in btrfs_release_prepared_delayed_node()
346 struct rb_node *node, *prev_node = NULL; in __btrfs_lookup_delayed_item() local
350 node = root->rb_node; in __btrfs_lookup_delayed_item()
352 while (node) { in __btrfs_lookup_delayed_item()
353 delayed_item = rb_entry(node, struct btrfs_delayed_item, in __btrfs_lookup_delayed_item()
355 prev_node = node; in __btrfs_lookup_delayed_item()
358 node = node->rb_right; in __btrfs_lookup_delayed_item()
360 node = node->rb_left; in __btrfs_lookup_delayed_item()
370 else if ((node = rb_prev(prev_node)) != NULL) { in __btrfs_lookup_delayed_item()
371 *prev = rb_entry(node, struct btrfs_delayed_item, in __btrfs_lookup_delayed_item()
382 else if ((node = rb_next(prev_node)) != NULL) { in __btrfs_lookup_delayed_item()
383 *next = rb_entry(node, struct btrfs_delayed_item, in __btrfs_lookup_delayed_item()
403 struct rb_node **p, *node; in __btrfs_add_delayed_item() local
417 node = &ins->rb_node; in __btrfs_add_delayed_item()
435 rb_link_node(node, parent_node, p); in __btrfs_add_delayed_item()
436 rb_insert_color_cached(node, root, leftmost); in __btrfs_add_delayed_item()
450 static int __btrfs_add_delayed_insertion_item(struct btrfs_delayed_node *node, in __btrfs_add_delayed_insertion_item() argument
453 return __btrfs_add_delayed_item(node, item, in __btrfs_add_delayed_insertion_item()
457 static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node, in __btrfs_add_delayed_deletion_item() argument
460 return __btrfs_add_delayed_item(node, item, in __btrfs_add_delayed_deletion_item()
606 struct btrfs_delayed_node *node) in btrfs_delayed_inode_reserve_metadata() argument
647 node->bytes_reserved = num_bytes; in btrfs_delayed_inode_reserve_metadata()
662 node->bytes_reserved = num_bytes; in btrfs_delayed_inode_reserve_metadata()
669 struct btrfs_delayed_node *node, in btrfs_delayed_inode_release_metadata() argument
674 if (!node->bytes_reserved) in btrfs_delayed_inode_release_metadata()
679 node->inode_id, node->bytes_reserved, 0); in btrfs_delayed_inode_release_metadata()
681 node->bytes_reserved); in btrfs_delayed_inode_release_metadata()
683 btrfs_qgroup_free_meta_prealloc(node->root, in btrfs_delayed_inode_release_metadata()
684 node->bytes_reserved); in btrfs_delayed_inode_release_metadata()
686 btrfs_qgroup_convert_reserved_meta(node->root, in btrfs_delayed_inode_release_metadata()
687 node->bytes_reserved); in btrfs_delayed_inode_release_metadata()
688 node->bytes_reserved = 0; in btrfs_delayed_inode_release_metadata()
838 struct btrfs_delayed_node *node) in btrfs_insert_delayed_items() argument
844 mutex_lock(&node->mutex); in btrfs_insert_delayed_items()
845 curr = __btrfs_first_delayed_insertion_item(node); in btrfs_insert_delayed_items()
866 mutex_unlock(&node->mutex); in btrfs_insert_delayed_items()
870 mutex_unlock(&node->mutex); in btrfs_insert_delayed_items()
940 struct btrfs_delayed_node *node) in btrfs_delete_delayed_items() argument
947 mutex_lock(&node->mutex); in btrfs_delete_delayed_items()
948 curr = __btrfs_first_delayed_deletion_item(node); in btrfs_delete_delayed_items()
968 mutex_unlock(&node->mutex); in btrfs_delete_delayed_items()
976 mutex_unlock(&node->mutex); in btrfs_delete_delayed_items()
981 mutex_unlock(&node->mutex); in btrfs_delete_delayed_items()
1015 struct btrfs_delayed_node *node) in __btrfs_update_delayed_inode() argument
1025 key.objectid = node->inode_id; in __btrfs_update_delayed_inode()
1029 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &node->flags)) in __btrfs_update_delayed_inode()
1045 write_extent_buffer(leaf, &node->inode_item, (unsigned long)inode_item, in __btrfs_update_delayed_inode()
1049 if (!test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &node->flags)) in __btrfs_update_delayed_inode()
1057 if (key.objectid != node->inode_id) in __btrfs_update_delayed_inode()
1071 btrfs_release_delayed_iref(node); in __btrfs_update_delayed_inode()
1075 btrfs_delayed_inode_release_metadata(fs_info, node, (ret < 0)); in __btrfs_update_delayed_inode()
1076 btrfs_release_delayed_inode(node); in __btrfs_update_delayed_inode()
1110 struct btrfs_delayed_node *node) in btrfs_update_delayed_inode() argument
1114 mutex_lock(&node->mutex); in btrfs_update_delayed_inode()
1115 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &node->flags)) { in btrfs_update_delayed_inode()
1116 mutex_unlock(&node->mutex); in btrfs_update_delayed_inode()
1120 ret = __btrfs_update_delayed_inode(trans, root, path, node); in btrfs_update_delayed_inode()
1121 mutex_unlock(&node->mutex); in btrfs_update_delayed_inode()
1128 struct btrfs_delayed_node *node) in __btrfs_commit_inode_delayed_items() argument
1132 ret = btrfs_insert_delayed_items(trans, path, node->root, node); in __btrfs_commit_inode_delayed_items()
1136 ret = btrfs_delete_delayed_items(trans, path, node->root, node); in __btrfs_commit_inode_delayed_items()
1140 ret = btrfs_update_delayed_inode(trans, node->root, path, node); in __btrfs_commit_inode_delayed_items()
1512 struct btrfs_delayed_node *node, in btrfs_delete_delayed_insertion_item() argument
1517 mutex_lock(&node->mutex); in btrfs_delete_delayed_insertion_item()
1518 item = __btrfs_lookup_delayed_insertion_item(node, key); in btrfs_delete_delayed_insertion_item()
1520 mutex_unlock(&node->mutex); in btrfs_delete_delayed_insertion_item()
1524 btrfs_delayed_item_release_metadata(node->root, item); in btrfs_delete_delayed_insertion_item()
1526 mutex_unlock(&node->mutex); in btrfs_delete_delayed_insertion_item()
1533 struct btrfs_delayed_node *node; in btrfs_delete_delayed_dir_index() local
1538 node = btrfs_get_or_create_delayed_node(dir); in btrfs_delete_delayed_dir_index()
1539 if (IS_ERR(node)) in btrfs_delete_delayed_dir_index()
1540 return PTR_ERR(node); in btrfs_delete_delayed_dir_index()
1546 ret = btrfs_delete_delayed_insertion_item(trans->fs_info, node, in btrfs_delete_delayed_dir_index()
1571 mutex_lock(&node->mutex); in btrfs_delete_delayed_dir_index()
1572 ret = __btrfs_add_delayed_deletion_item(node, item); in btrfs_delete_delayed_dir_index()
1576 index, node->root->root_key.objectid, in btrfs_delete_delayed_dir_index()
1577 node->inode_id, ret); in btrfs_delete_delayed_dir_index()
1581 mutex_unlock(&node->mutex); in btrfs_delete_delayed_dir_index()
1583 btrfs_release_delayed_node(node); in btrfs_delete_delayed_dir_index()