Lines Matching refs:node
86 struct btrfs_delayed_node *node; in btrfs_get_delayed_node() local
88 node = ACCESS_ONCE(btrfs_inode->delayed_node); in btrfs_get_delayed_node()
89 if (node) { in btrfs_get_delayed_node()
90 atomic_inc(&node->refs); in btrfs_get_delayed_node()
91 return node; in btrfs_get_delayed_node()
95 node = radix_tree_lookup(&root->delayed_nodes_tree, ino); in btrfs_get_delayed_node()
96 if (node) { in btrfs_get_delayed_node()
98 atomic_inc(&node->refs); /* can be accessed */ in btrfs_get_delayed_node()
99 BUG_ON(btrfs_inode->delayed_node != node); in btrfs_get_delayed_node()
101 return node; in btrfs_get_delayed_node()
103 btrfs_inode->delayed_node = node; in btrfs_get_delayed_node()
105 atomic_add(2, &node->refs); in btrfs_get_delayed_node()
107 return node; in btrfs_get_delayed_node()
118 struct btrfs_delayed_node *node; in btrfs_get_or_create_delayed_node() local
125 node = btrfs_get_delayed_node(inode); in btrfs_get_or_create_delayed_node()
126 if (node) in btrfs_get_or_create_delayed_node()
127 return node; in btrfs_get_or_create_delayed_node()
129 node = kmem_cache_zalloc(delayed_node_cache, GFP_NOFS); in btrfs_get_or_create_delayed_node()
130 if (!node) in btrfs_get_or_create_delayed_node()
132 btrfs_init_delayed_node(node, root, ino); in btrfs_get_or_create_delayed_node()
135 atomic_add(2, &node->refs); in btrfs_get_or_create_delayed_node()
139 kmem_cache_free(delayed_node_cache, node); in btrfs_get_or_create_delayed_node()
144 ret = radix_tree_insert(&root->delayed_nodes_tree, ino, node); in btrfs_get_or_create_delayed_node()
147 kmem_cache_free(delayed_node_cache, node); in btrfs_get_or_create_delayed_node()
151 btrfs_inode->delayed_node = node; in btrfs_get_or_create_delayed_node()
155 return node; in btrfs_get_or_create_delayed_node()
164 struct btrfs_delayed_node *node, in btrfs_queue_delayed_node() argument
168 if (test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) { in btrfs_queue_delayed_node()
169 if (!list_empty(&node->p_list)) in btrfs_queue_delayed_node()
170 list_move_tail(&node->p_list, &root->prepare_list); in btrfs_queue_delayed_node()
172 list_add_tail(&node->p_list, &root->prepare_list); in btrfs_queue_delayed_node()
174 list_add_tail(&node->n_list, &root->node_list); in btrfs_queue_delayed_node()
175 list_add_tail(&node->p_list, &root->prepare_list); in btrfs_queue_delayed_node()
176 atomic_inc(&node->refs); /* inserted into list */ in btrfs_queue_delayed_node()
178 set_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags); in btrfs_queue_delayed_node()
185 struct btrfs_delayed_node *node) in btrfs_dequeue_delayed_node() argument
188 if (test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) { in btrfs_dequeue_delayed_node()
190 atomic_dec(&node->refs); /* not in the list */ in btrfs_dequeue_delayed_node()
191 list_del_init(&node->n_list); in btrfs_dequeue_delayed_node()
192 if (!list_empty(&node->p_list)) in btrfs_dequeue_delayed_node()
193 list_del_init(&node->p_list); in btrfs_dequeue_delayed_node()
194 clear_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags); in btrfs_dequeue_delayed_node()
203 struct btrfs_delayed_node *node = NULL; in btrfs_first_delayed_node() local
210 node = list_entry(p, struct btrfs_delayed_node, n_list); in btrfs_first_delayed_node()
211 atomic_inc(&node->refs); in btrfs_first_delayed_node()
215 return node; in btrfs_first_delayed_node()
219 struct btrfs_delayed_node *node) in btrfs_next_delayed_node() argument
225 delayed_root = node->root->fs_info->delayed_root; in btrfs_next_delayed_node()
227 if (!test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) { in btrfs_next_delayed_node()
232 } else if (list_is_last(&node->n_list, &delayed_root->node_list)) in btrfs_next_delayed_node()
235 p = node->n_list.next; in btrfs_next_delayed_node()
278 static inline void btrfs_release_delayed_node(struct btrfs_delayed_node *node) in btrfs_release_delayed_node() argument
280 __btrfs_release_delayed_node(node, 0); in btrfs_release_delayed_node()
287 struct btrfs_delayed_node *node = NULL; in btrfs_first_prepared_delayed_node() local
295 node = list_entry(p, struct btrfs_delayed_node, p_list); in btrfs_first_prepared_delayed_node()
296 atomic_inc(&node->refs); in btrfs_first_prepared_delayed_node()
300 return node; in btrfs_first_prepared_delayed_node()
304 struct btrfs_delayed_node *node) in btrfs_release_prepared_delayed_node() argument
306 __btrfs_release_delayed_node(node, 1); in btrfs_release_prepared_delayed_node()
339 struct rb_node *node, *prev_node = NULL; in __btrfs_lookup_delayed_item() local
343 node = root->rb_node; in __btrfs_lookup_delayed_item()
345 while (node) { in __btrfs_lookup_delayed_item()
346 delayed_item = rb_entry(node, struct btrfs_delayed_item, in __btrfs_lookup_delayed_item()
348 prev_node = node; in __btrfs_lookup_delayed_item()
351 node = node->rb_right; in __btrfs_lookup_delayed_item()
353 node = node->rb_left; in __btrfs_lookup_delayed_item()
363 else if ((node = rb_prev(prev_node)) != NULL) { in __btrfs_lookup_delayed_item()
364 *prev = rb_entry(node, struct btrfs_delayed_item, in __btrfs_lookup_delayed_item()
375 else if ((node = rb_next(prev_node)) != NULL) { in __btrfs_lookup_delayed_item()
376 *next = rb_entry(node, struct btrfs_delayed_item, in __btrfs_lookup_delayed_item()
396 struct rb_node **p, *node; in __btrfs_add_delayed_item() local
409 node = &ins->rb_node; in __btrfs_add_delayed_item()
425 rb_link_node(node, parent_node, p); in __btrfs_add_delayed_item()
426 rb_insert_color(node, root); in __btrfs_add_delayed_item()
440 static int __btrfs_add_delayed_insertion_item(struct btrfs_delayed_node *node, in __btrfs_add_delayed_insertion_item() argument
443 return __btrfs_add_delayed_item(node, item, in __btrfs_add_delayed_insertion_item()
447 static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node, in __btrfs_add_delayed_deletion_item() argument
450 return __btrfs_add_delayed_item(node, item, in __btrfs_add_delayed_deletion_item()
584 struct btrfs_delayed_node *node) in btrfs_delayed_inode_reserve_metadata() argument
642 node->bytes_reserved = num_bytes; in btrfs_delayed_inode_reserve_metadata()
669 node->bytes_reserved = num_bytes; in btrfs_delayed_inode_reserve_metadata()
682 struct btrfs_delayed_node *node) in btrfs_delayed_inode_release_metadata() argument
686 if (!node->bytes_reserved) in btrfs_delayed_inode_release_metadata()
691 node->inode_id, node->bytes_reserved, 0); in btrfs_delayed_inode_release_metadata()
693 node->bytes_reserved); in btrfs_delayed_inode_release_metadata()
694 node->bytes_reserved = 0; in btrfs_delayed_inode_release_metadata()
844 struct btrfs_delayed_node *node) in btrfs_insert_delayed_items() argument
850 mutex_lock(&node->mutex); in btrfs_insert_delayed_items()
851 curr = __btrfs_first_delayed_insertion_item(node); in btrfs_insert_delayed_items()
872 mutex_unlock(&node->mutex); in btrfs_insert_delayed_items()
876 mutex_unlock(&node->mutex); in btrfs_insert_delayed_items()
946 struct btrfs_delayed_node *node) in btrfs_delete_delayed_items() argument
952 mutex_lock(&node->mutex); in btrfs_delete_delayed_items()
953 curr = __btrfs_first_delayed_deletion_item(node); in btrfs_delete_delayed_items()
971 mutex_unlock(&node->mutex); in btrfs_delete_delayed_items()
979 mutex_unlock(&node->mutex); in btrfs_delete_delayed_items()
984 mutex_unlock(&node->mutex); in btrfs_delete_delayed_items()
1018 struct btrfs_delayed_node *node) in __btrfs_update_delayed_inode() argument
1026 key.objectid = node->inode_id; in __btrfs_update_delayed_inode()
1030 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &node->flags)) in __btrfs_update_delayed_inode()
1046 write_extent_buffer(leaf, &node->inode_item, (unsigned long)inode_item, in __btrfs_update_delayed_inode()
1050 if (!test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &node->flags)) in __btrfs_update_delayed_inode()
1058 if (key.objectid != node->inode_id) in __btrfs_update_delayed_inode()
1072 btrfs_release_delayed_iref(node); in __btrfs_update_delayed_inode()
1076 btrfs_delayed_inode_release_metadata(root, node); in __btrfs_update_delayed_inode()
1077 btrfs_release_delayed_inode(node); in __btrfs_update_delayed_inode()
1100 struct btrfs_delayed_node *node) in btrfs_update_delayed_inode() argument
1104 mutex_lock(&node->mutex); in btrfs_update_delayed_inode()
1105 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &node->flags)) { in btrfs_update_delayed_inode()
1106 mutex_unlock(&node->mutex); in btrfs_update_delayed_inode()
1110 ret = __btrfs_update_delayed_inode(trans, root, path, node); in btrfs_update_delayed_inode()
1111 mutex_unlock(&node->mutex); in btrfs_update_delayed_inode()
1118 struct btrfs_delayed_node *node) in __btrfs_commit_inode_delayed_items() argument
1122 ret = btrfs_insert_delayed_items(trans, path, node->root, node); in __btrfs_commit_inode_delayed_items()
1126 ret = btrfs_delete_delayed_items(trans, path, node->root, node); in __btrfs_commit_inode_delayed_items()
1130 ret = btrfs_update_delayed_inode(trans, node->root, path, node); in __btrfs_commit_inode_delayed_items()
1497 struct btrfs_delayed_node *node, in btrfs_delete_delayed_insertion_item() argument
1502 mutex_lock(&node->mutex); in btrfs_delete_delayed_insertion_item()
1503 item = __btrfs_lookup_delayed_insertion_item(node, key); in btrfs_delete_delayed_insertion_item()
1505 mutex_unlock(&node->mutex); in btrfs_delete_delayed_insertion_item()
1511 mutex_unlock(&node->mutex); in btrfs_delete_delayed_insertion_item()
1519 struct btrfs_delayed_node *node; in btrfs_delete_delayed_dir_index() local
1524 node = btrfs_get_or_create_delayed_node(dir); in btrfs_delete_delayed_dir_index()
1525 if (IS_ERR(node)) in btrfs_delete_delayed_dir_index()
1526 return PTR_ERR(node); in btrfs_delete_delayed_dir_index()
1532 ret = btrfs_delete_delayed_insertion_item(root, node, &item_key); in btrfs_delete_delayed_dir_index()
1551 mutex_lock(&node->mutex); in btrfs_delete_delayed_dir_index()
1552 ret = __btrfs_add_delayed_deletion_item(node, item); in btrfs_delete_delayed_dir_index()
1556 index, node->root->objectid, node->inode_id, ret); in btrfs_delete_delayed_dir_index()
1559 mutex_unlock(&node->mutex); in btrfs_delete_delayed_dir_index()
1561 btrfs_release_delayed_node(node); in btrfs_delete_delayed_dir_index()