Lines Matching refs:node
72 struct btrfs_delayed_node *node;
74 node = READ_ONCE(btrfs_inode->delayed_node);
75 if (node) {
76 refcount_inc(&node->refs);
77 return node;
81 node = radix_tree_lookup(&root->delayed_nodes_tree, ino);
83 if (node) {
85 refcount_inc(&node->refs); /* can be accessed */
86 BUG_ON(btrfs_inode->delayed_node != node);
88 return node;
93 * this node from the radix tree. In this case, the refcount
103 * If this node is properly in the radix, we want to bump the
107 if (refcount_inc_not_zero(&node->refs)) {
108 refcount_inc(&node->refs);
109 btrfs_inode->delayed_node = node;
111 node = NULL;
115 return node;
122 /* Will return either the node or PTR_ERR(-ENOMEM) */
126 struct btrfs_delayed_node *node;
132 node = btrfs_get_delayed_node(btrfs_inode);
133 if (node)
134 return node;
136 node = kmem_cache_zalloc(delayed_node_cache, GFP_NOFS);
137 if (!node)
139 btrfs_init_delayed_node(node, root, ino);
142 refcount_set(&node->refs, 2);
146 kmem_cache_free(delayed_node_cache, node);
151 ret = radix_tree_insert(&root->delayed_nodes_tree, ino, node);
154 kmem_cache_free(delayed_node_cache, node);
158 btrfs_inode->delayed_node = node;
162 return node;
168 * If mod = 1, add this node into the prepared list.
171 struct btrfs_delayed_node *node,
175 if (test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) {
176 if (!list_empty(&node->p_list))
177 list_move_tail(&node->p_list, &root->prepare_list);
179 list_add_tail(&node->p_list, &root->prepare_list);
181 list_add_tail(&node->n_list, &root->node_list);
182 list_add_tail(&node->p_list, &root->prepare_list);
183 refcount_inc(&node->refs); /* inserted into list */
185 set_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags);
192 struct btrfs_delayed_node *node)
195 if (test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) {
197 refcount_dec(&node->refs); /* not in the list */
198 list_del_init(&node->n_list);
199 if (!list_empty(&node->p_list))
200 list_del_init(&node->p_list);
201 clear_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags);
210 struct btrfs_delayed_node *node = NULL;
217 node = list_entry(p, struct btrfs_delayed_node, n_list);
218 refcount_inc(&node->refs);
222 return node;
226 struct btrfs_delayed_node *node)
232 delayed_root = node->root->fs_info->delayed_root;
234 if (!test_bit(BTRFS_DELAYED_NODE_IN_LIST, &node->flags)) {
239 } else if (list_is_last(&node->n_list, &delayed_root->node_list))
242 p = node->n_list.next;
286 static inline void btrfs_release_delayed_node(struct btrfs_delayed_node *node)
288 __btrfs_release_delayed_node(node, 0);
295 struct btrfs_delayed_node *node = NULL;
303 node = list_entry(p, struct btrfs_delayed_node, p_list);
304 refcount_inc(&node->refs);
308 return node;
312 struct btrfs_delayed_node *node)
314 __btrfs_release_delayed_node(node, 1);
333 * @delayed_node: pointer to the delayed node
347 struct rb_node *node, *prev_node = NULL;
351 node = root->rb_node;
353 while (node) {
354 delayed_item = rb_entry(node, struct btrfs_delayed_item,
356 prev_node = node;
359 node = node->rb_right;
361 node = node->rb_left;
371 else if ((node = rb_prev(prev_node)) != NULL) {
372 *prev = rb_entry(node, struct btrfs_delayed_item,
383 else if ((node = rb_next(prev_node)) != NULL) {
384 *next = rb_entry(node, struct btrfs_delayed_item,
404 struct rb_node **p, *node;
418 node = &ins->rb_node;
436 rb_link_node(node, parent_node, p);
437 rb_insert_color_cached(node, root, leftmost);
451 static int __btrfs_add_delayed_insertion_item(struct btrfs_delayed_node *node,
454 return __btrfs_add_delayed_item(node, item,
458 static int __btrfs_add_delayed_deletion_item(struct btrfs_delayed_node *node,
461 return __btrfs_add_delayed_item(node, item,
606 struct btrfs_delayed_node *node)
647 node->bytes_reserved = num_bytes;
662 node->bytes_reserved = num_bytes;
669 struct btrfs_delayed_node *node,
674 if (!node->bytes_reserved)
679 node->inode_id, node->bytes_reserved, 0);
680 btrfs_block_rsv_release(fs_info, rsv, node->bytes_reserved, NULL);
682 btrfs_qgroup_free_meta_prealloc(node->root,
683 node->bytes_reserved);
685 btrfs_qgroup_convert_reserved_meta(node->root,
686 node->bytes_reserved);
687 node->bytes_reserved = 0;
836 struct btrfs_delayed_node *node)
842 mutex_lock(&node->mutex);
843 curr = __btrfs_first_delayed_insertion_item(node);
864 mutex_unlock(&node->mutex);
868 mutex_unlock(&node->mutex);
938 struct btrfs_delayed_node *node)
945 mutex_lock(&node->mutex);
946 curr = __btrfs_first_delayed_deletion_item(node);
957 * can't find the item which the node points to, so this node
966 mutex_unlock(&node->mutex);
974 mutex_unlock(&node->mutex);
979 mutex_unlock(&node->mutex);
1013 struct btrfs_delayed_node *node)
1023 key.objectid = node->inode_id;
1027 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &node->flags))
1043 write_extent_buffer(leaf, &node->inode_item, (unsigned long)inode_item,
1047 if (!test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &node->flags))
1055 if (key.objectid != node->inode_id)
1069 btrfs_release_delayed_iref(node);
1073 btrfs_delayed_inode_release_metadata(fs_info, node, (ret < 0));
1074 btrfs_release_delayed_inode(node);
1108 struct btrfs_delayed_node *node)
1112 mutex_lock(&node->mutex);
1113 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &node->flags)) {
1114 mutex_unlock(&node->mutex);
1118 ret = __btrfs_update_delayed_inode(trans, root, path, node);
1119 mutex_unlock(&node->mutex);
1126 struct btrfs_delayed_node *node)
1130 ret = btrfs_insert_delayed_items(trans, path, node->root, node);
1134 ret = btrfs_delete_delayed_items(trans, path, node->root, node);
1138 ret = btrfs_update_delayed_inode(trans, node->root, path, node);
1184 * node. If the commit of delayed items was successful the path
1194 * releasing the delayed node, as that requires taking the delayed node's
1497 "err add delayed dir index item(name: %.*s) into the insertion tree of the delayed node(root id: %llu, inode id: %llu, errno: %d)",
1510 struct btrfs_delayed_node *node,
1515 mutex_lock(&node->mutex);
1516 item = __btrfs_lookup_delayed_insertion_item(node, key);
1518 mutex_unlock(&node->mutex);
1522 btrfs_delayed_item_release_metadata(node->root, item);
1524 mutex_unlock(&node->mutex);
1531 struct btrfs_delayed_node *node;
1536 node = btrfs_get_or_create_delayed_node(dir);
1537 if (IS_ERR(node))
1538 return PTR_ERR(node);
1544 ret = btrfs_delete_delayed_insertion_item(trans->fs_info, node,
1569 mutex_lock(&node->mutex);
1570 ret = __btrfs_add_delayed_deletion_item(node, item);
1573 "err add delayed dir index item(index: %llu) into the deletion tree of the delayed node(root id: %llu, inode id: %llu, errno: %d)",
1574 index, node->root->root_key.objectid,
1575 node->inode_id, ret);
1579 mutex_unlock(&node->mutex);
1581 btrfs_release_delayed_node(node);
1594 * a new directory index is added into the delayed node and index_cnt
1595 * is updated now. So we needn't lock the delayed node.
1641 * This delayed node is still cached in the btrfs inode, so refs
1647 * requeue or dequeue this delayed node.
1987 * Don't increase refs in case the node is dead and