Lines Matching refs:delayed_node

42 				struct btrfs_delayed_node *delayed_node,
45 delayed_node->root = root;
46 delayed_node->inode_id = inode_id;
47 refcount_set(&delayed_node->refs, 0);
48 delayed_node->ins_root = RB_ROOT_CACHED;
49 delayed_node->del_root = RB_ROOT_CACHED;
50 mutex_init(&delayed_node->mutex);
51 INIT_LIST_HEAD(&delayed_node->n_list);
52 INIT_LIST_HEAD(&delayed_node->p_list);
74 node = READ_ONCE(btrfs_inode->delayed_node);
84 if (btrfs_inode->delayed_node) {
86 BUG_ON(btrfs_inode->delayed_node != node);
109 btrfs_inode->delayed_node = node;
158 btrfs_inode->delayed_node = node;
166 * Call it when holding delayed_node->mutex
190 /* Call it when holding delayed_node->mutex */
253 struct btrfs_delayed_node *delayed_node,
258 if (!delayed_node)
261 delayed_root = delayed_node->root->fs_info->delayed_root;
263 mutex_lock(&delayed_node->mutex);
264 if (delayed_node->count)
265 btrfs_queue_delayed_node(delayed_root, delayed_node, mod);
267 btrfs_dequeue_delayed_node(delayed_root, delayed_node);
268 mutex_unlock(&delayed_node->mutex);
270 if (refcount_dec_and_test(&delayed_node->refs)) {
271 struct btrfs_root *root = delayed_node->root;
278 ASSERT(refcount_read(&delayed_node->refs) == 0);
280 delayed_node->inode_id);
282 kmem_cache_free(delayed_node_cache, delayed_node);
325 item->delayed_node = NULL;
333 * @delayed_node: pointer to the delayed node
393 struct btrfs_delayed_node *delayed_node,
396 return __btrfs_lookup_delayed_item(&delayed_node->ins_root.rb_root, key,
400 static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node,
412 root = &delayed_node->ins_root;
414 root = &delayed_node->del_root;
438 ins->delayed_node = delayed_node;
443 ins->key.offset >= delayed_node->index_cnt)
444 delayed_node->index_cnt = ins->key.offset + 1;
446 delayed_node->count++;
447 atomic_inc(&delayed_node->root->fs_info->delayed_root->items);
480 /* Not associated with any delayed_node */
481 if (!delayed_item->delayed_node)
483 delayed_root = delayed_item->delayed_node->root->fs_info->delayed_root;
490 root = &delayed_item->delayed_node->ins_root;
492 root = &delayed_item->delayed_node->del_root;
495 delayed_item->delayed_node->count--;
510 struct btrfs_delayed_node *delayed_node)
515 p = rb_first_cached(&delayed_node->ins_root);
523 struct btrfs_delayed_node *delayed_node)
528 p = rb_first_cached(&delayed_node->del_root);
983 static void btrfs_release_delayed_inode(struct btrfs_delayed_node *delayed_node)
987 if (delayed_node &&
988 test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
989 BUG_ON(!delayed_node->root);
990 clear_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags);
991 delayed_node->count--;
993 delayed_root = delayed_node->root->fs_info->delayed_root;
998 static void btrfs_release_delayed_iref(struct btrfs_delayed_node *delayed_node)
1002 ASSERT(delayed_node->root);
1003 clear_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags);
1004 delayed_node->count--;
1006 delayed_root = delayed_node->root->fs_info->delayed_root;
1221 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode);
1226 if (!delayed_node)
1229 mutex_lock(&delayed_node->mutex);
1230 if (!delayed_node->count) {
1231 mutex_unlock(&delayed_node->mutex);
1232 btrfs_release_delayed_node(delayed_node);
1235 mutex_unlock(&delayed_node->mutex);
1239 btrfs_release_delayed_node(delayed_node);
1245 trans->block_rsv = &delayed_node->root->fs_info->delayed_block_rsv;
1247 ret = __btrfs_commit_inode_delayed_items(trans, path, delayed_node);
1249 btrfs_release_delayed_node(delayed_node);
1260 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode);
1265 if (!delayed_node)
1268 mutex_lock(&delayed_node->mutex);
1269 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1270 mutex_unlock(&delayed_node->mutex);
1271 btrfs_release_delayed_node(delayed_node);
1274 mutex_unlock(&delayed_node->mutex);
1276 trans = btrfs_join_transaction(delayed_node->root);
1292 mutex_lock(&delayed_node->mutex);
1293 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags))
1294 ret = __btrfs_update_delayed_inode(trans, delayed_node->root,
1295 path, delayed_node);
1298 mutex_unlock(&delayed_node->mutex);
1306 btrfs_release_delayed_node(delayed_node);
1313 struct btrfs_delayed_node *delayed_node;
1315 delayed_node = READ_ONCE(inode->delayed_node);
1316 if (!delayed_node)
1319 inode->delayed_node = NULL;
1320 btrfs_release_delayed_node(delayed_node);
1335 struct btrfs_delayed_node *delayed_node = NULL;
1352 delayed_node = btrfs_first_prepared_delayed_node(delayed_root);
1353 if (!delayed_node)
1357 root = delayed_node->root;
1362 btrfs_release_prepared_delayed_node(delayed_node);
1370 __btrfs_commit_inode_delayed_items(trans, path, delayed_node);
1377 btrfs_release_prepared_delayed_node(delayed_node);
1459 struct btrfs_delayed_node *delayed_node;
1464 delayed_node = btrfs_get_or_create_delayed_node(dir);
1465 if (IS_ERR(delayed_node))
1466 return PTR_ERR(delayed_node);
1493 mutex_lock(&delayed_node->mutex);
1494 ret = __btrfs_add_delayed_insertion_item(delayed_node, delayed_item);
1498 name_len, name, delayed_node->root->root_key.objectid,
1499 delayed_node->inode_id, ret);
1502 mutex_unlock(&delayed_node->mutex);
1505 btrfs_release_delayed_node(delayed_node);
1587 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode);
1589 if (!delayed_node)
1597 if (!delayed_node->index_cnt) {
1598 btrfs_release_delayed_node(delayed_node);
1602 inode->index_cnt = delayed_node->index_cnt;
1603 btrfs_release_delayed_node(delayed_node);
1611 struct btrfs_delayed_node *delayed_node;
1614 delayed_node = btrfs_get_delayed_node(BTRFS_I(inode));
1615 if (!delayed_node)
1625 mutex_lock(&delayed_node->mutex);
1626 item = __btrfs_first_delayed_insertion_item(delayed_node);
1633 item = __btrfs_first_delayed_deletion_item(delayed_node);
1639 mutex_unlock(&delayed_node->mutex);
1649 refcount_dec(&delayed_node->refs);
1793 struct btrfs_delayed_node *delayed_node;
1796 delayed_node = btrfs_get_delayed_node(BTRFS_I(inode));
1797 if (!delayed_node)
1800 mutex_lock(&delayed_node->mutex);
1801 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1802 mutex_unlock(&delayed_node->mutex);
1803 btrfs_release_delayed_node(delayed_node);
1807 inode_item = &delayed_node->inode_item;
1843 mutex_unlock(&delayed_node->mutex);
1844 btrfs_release_delayed_node(delayed_node);
1851 struct btrfs_delayed_node *delayed_node;
1854 delayed_node = btrfs_get_or_create_delayed_node(BTRFS_I(inode));
1855 if (IS_ERR(delayed_node))
1856 return PTR_ERR(delayed_node);
1858 mutex_lock(&delayed_node->mutex);
1859 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1860 fill_stack_inode_item(trans, &delayed_node->inode_item, inode);
1865 delayed_node);
1869 fill_stack_inode_item(trans, &delayed_node->inode_item, inode);
1870 set_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags);
1871 delayed_node->count++;
1874 mutex_unlock(&delayed_node->mutex);
1875 btrfs_release_delayed_node(delayed_node);
1882 struct btrfs_delayed_node *delayed_node;
1892 delayed_node = btrfs_get_or_create_delayed_node(inode);
1893 if (IS_ERR(delayed_node))
1894 return PTR_ERR(delayed_node);
1910 mutex_lock(&delayed_node->mutex);
1911 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags))
1914 set_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags);
1915 delayed_node->count++;
1918 mutex_unlock(&delayed_node->mutex);
1919 btrfs_release_delayed_node(delayed_node);
1923 static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node)
1925 struct btrfs_root *root = delayed_node->root;
1929 mutex_lock(&delayed_node->mutex);
1930 curr_item = __btrfs_first_delayed_insertion_item(delayed_node);
1938 curr_item = __btrfs_first_delayed_deletion_item(delayed_node);
1946 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags))
1947 btrfs_release_delayed_iref(delayed_node);
1949 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1950 btrfs_delayed_inode_release_metadata(fs_info, delayed_node, false);
1951 btrfs_release_delayed_inode(delayed_node);
1953 mutex_unlock(&delayed_node->mutex);
1958 struct btrfs_delayed_node *delayed_node;
1960 delayed_node = btrfs_get_delayed_node(inode);
1961 if (!delayed_node)
1964 __btrfs_kill_delayed_node(delayed_node);
1965 btrfs_release_delayed_node(delayed_node);