Lines Matching refs:delayed_node
42 struct btrfs_delayed_node *delayed_node, in btrfs_init_delayed_node() argument
45 delayed_node->root = root; in btrfs_init_delayed_node()
46 delayed_node->inode_id = inode_id; in btrfs_init_delayed_node()
47 refcount_set(&delayed_node->refs, 0); in btrfs_init_delayed_node()
48 delayed_node->ins_root = RB_ROOT_CACHED; in btrfs_init_delayed_node()
49 delayed_node->del_root = RB_ROOT_CACHED; in btrfs_init_delayed_node()
50 mutex_init(&delayed_node->mutex); in btrfs_init_delayed_node()
51 INIT_LIST_HEAD(&delayed_node->n_list); in btrfs_init_delayed_node()
52 INIT_LIST_HEAD(&delayed_node->p_list); in btrfs_init_delayed_node()
62 node = READ_ONCE(btrfs_inode->delayed_node); in btrfs_get_delayed_node()
72 if (btrfs_inode->delayed_node) { in btrfs_get_delayed_node()
74 BUG_ON(btrfs_inode->delayed_node != node); in btrfs_get_delayed_node()
97 btrfs_inode->delayed_node = node; in btrfs_get_delayed_node()
146 btrfs_inode->delayed_node = node; in btrfs_get_or_create_delayed_node()
241 struct btrfs_delayed_node *delayed_node, in __btrfs_release_delayed_node() argument
246 if (!delayed_node) in __btrfs_release_delayed_node()
249 delayed_root = delayed_node->root->fs_info->delayed_root; in __btrfs_release_delayed_node()
251 mutex_lock(&delayed_node->mutex); in __btrfs_release_delayed_node()
252 if (delayed_node->count) in __btrfs_release_delayed_node()
253 btrfs_queue_delayed_node(delayed_root, delayed_node, mod); in __btrfs_release_delayed_node()
255 btrfs_dequeue_delayed_node(delayed_root, delayed_node); in __btrfs_release_delayed_node()
256 mutex_unlock(&delayed_node->mutex); in __btrfs_release_delayed_node()
258 if (refcount_dec_and_test(&delayed_node->refs)) { in __btrfs_release_delayed_node()
259 struct btrfs_root *root = delayed_node->root; in __btrfs_release_delayed_node()
266 ASSERT(refcount_read(&delayed_node->refs) == 0); in __btrfs_release_delayed_node()
268 delayed_node->inode_id); in __btrfs_release_delayed_node()
270 kmem_cache_free(delayed_node_cache, delayed_node); in __btrfs_release_delayed_node()
316 item->delayed_node = node; in btrfs_alloc_delayed_item()
354 static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node, in __btrfs_add_delayed_item() argument
364 root = &delayed_node->ins_root; in __btrfs_add_delayed_item()
366 root = &delayed_node->del_root; in __btrfs_add_delayed_item()
390 ins->index >= delayed_node->index_cnt) in __btrfs_add_delayed_item()
391 delayed_node->index_cnt = ins->index + 1; in __btrfs_add_delayed_item()
393 delayed_node->count++; in __btrfs_add_delayed_item()
394 atomic_inc(&delayed_node->root->fs_info->delayed_root->items); in __btrfs_add_delayed_item()
417 delayed_root = delayed_item->delayed_node->root->fs_info->delayed_root; in __btrfs_remove_delayed_item()
422 root = &delayed_item->delayed_node->ins_root; in __btrfs_remove_delayed_item()
424 root = &delayed_item->delayed_node->del_root; in __btrfs_remove_delayed_item()
428 delayed_item->delayed_node->count--; in __btrfs_remove_delayed_item()
443 struct btrfs_delayed_node *delayed_node) in __btrfs_first_delayed_insertion_item() argument
448 p = rb_first_cached(&delayed_node->ins_root); in __btrfs_first_delayed_insertion_item()
456 struct btrfs_delayed_node *delayed_node) in __btrfs_first_delayed_deletion_item() argument
461 p = rb_first_cached(&delayed_node->del_root); in __btrfs_first_delayed_deletion_item()
506 item->delayed_node->inode_id, in btrfs_delayed_item_reserve_metadata()
535 item->delayed_node->inode_id, in btrfs_delayed_item_release_metadata()
643 struct btrfs_delayed_node *node = first_item->delayed_node; in btrfs_insert_delayed_item()
831 const u64 ino = item->delayed_node->inode_id; in btrfs_batch_delete_items()
963 static void btrfs_release_delayed_inode(struct btrfs_delayed_node *delayed_node) in btrfs_release_delayed_inode() argument
967 if (delayed_node && in btrfs_release_delayed_inode()
968 test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_release_delayed_inode()
969 BUG_ON(!delayed_node->root); in btrfs_release_delayed_inode()
970 clear_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags); in btrfs_release_delayed_inode()
971 delayed_node->count--; in btrfs_release_delayed_inode()
973 delayed_root = delayed_node->root->fs_info->delayed_root; in btrfs_release_delayed_inode()
978 static void btrfs_release_delayed_iref(struct btrfs_delayed_node *delayed_node) in btrfs_release_delayed_iref() argument
981 if (test_and_clear_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags)) { in btrfs_release_delayed_iref()
984 ASSERT(delayed_node->root); in btrfs_release_delayed_iref()
985 delayed_node->count--; in btrfs_release_delayed_iref()
987 delayed_root = delayed_node->root->fs_info->delayed_root; in btrfs_release_delayed_iref()
1183 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); in btrfs_commit_inode_delayed_items() local
1188 if (!delayed_node) in btrfs_commit_inode_delayed_items()
1191 mutex_lock(&delayed_node->mutex); in btrfs_commit_inode_delayed_items()
1192 if (!delayed_node->count) { in btrfs_commit_inode_delayed_items()
1193 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_items()
1194 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_items()
1197 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_items()
1201 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_items()
1206 trans->block_rsv = &delayed_node->root->fs_info->delayed_block_rsv; in btrfs_commit_inode_delayed_items()
1208 ret = __btrfs_commit_inode_delayed_items(trans, path, delayed_node); in btrfs_commit_inode_delayed_items()
1210 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_items()
1221 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); in btrfs_commit_inode_delayed_inode() local
1226 if (!delayed_node) in btrfs_commit_inode_delayed_inode()
1229 mutex_lock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1230 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_commit_inode_delayed_inode()
1231 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1232 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_inode()
1235 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1237 trans = btrfs_join_transaction(delayed_node->root); in btrfs_commit_inode_delayed_inode()
1252 mutex_lock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1253 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) in btrfs_commit_inode_delayed_inode()
1254 ret = __btrfs_update_delayed_inode(trans, delayed_node->root, in btrfs_commit_inode_delayed_inode()
1255 path, delayed_node); in btrfs_commit_inode_delayed_inode()
1258 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1266 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_inode()
1273 struct btrfs_delayed_node *delayed_node; in btrfs_remove_delayed_node() local
1275 delayed_node = READ_ONCE(inode->delayed_node); in btrfs_remove_delayed_node()
1276 if (!delayed_node) in btrfs_remove_delayed_node()
1279 inode->delayed_node = NULL; in btrfs_remove_delayed_node()
1280 btrfs_release_delayed_node(delayed_node); in btrfs_remove_delayed_node()
1295 struct btrfs_delayed_node *delayed_node = NULL; in btrfs_async_run_delayed_root() local
1312 delayed_node = btrfs_first_prepared_delayed_node(delayed_root); in btrfs_async_run_delayed_root()
1313 if (!delayed_node) in btrfs_async_run_delayed_root()
1316 root = delayed_node->root; in btrfs_async_run_delayed_root()
1321 btrfs_release_prepared_delayed_node(delayed_node); in btrfs_async_run_delayed_root()
1329 __btrfs_commit_inode_delayed_items(trans, path, delayed_node); in btrfs_async_run_delayed_root()
1336 btrfs_release_prepared_delayed_node(delayed_node); in btrfs_async_run_delayed_root()
1420 struct btrfs_delayed_node *delayed_node; in btrfs_insert_delayed_dir_index() local
1427 delayed_node = btrfs_get_or_create_delayed_node(dir); in btrfs_insert_delayed_dir_index()
1428 if (IS_ERR(delayed_node)) in btrfs_insert_delayed_dir_index()
1429 return PTR_ERR(delayed_node); in btrfs_insert_delayed_dir_index()
1432 delayed_node, in btrfs_insert_delayed_dir_index()
1451 mutex_lock(&delayed_node->mutex); in btrfs_insert_delayed_dir_index()
1453 if (delayed_node->index_item_leaves == 0 || in btrfs_insert_delayed_dir_index()
1454 delayed_node->curr_index_batch_size + data_len > leaf_data_size) { in btrfs_insert_delayed_dir_index()
1455 delayed_node->curr_index_batch_size = data_len; in btrfs_insert_delayed_dir_index()
1458 delayed_node->curr_index_batch_size += data_len; in btrfs_insert_delayed_dir_index()
1470 mutex_unlock(&delayed_node->mutex); in btrfs_insert_delayed_dir_index()
1475 delayed_node->index_item_leaves++; in btrfs_insert_delayed_dir_index()
1493 ret = __btrfs_add_delayed_item(delayed_node, delayed_item); in btrfs_insert_delayed_dir_index()
1497 name_len, name, delayed_node->root->root_key.objectid, in btrfs_insert_delayed_dir_index()
1498 delayed_node->inode_id, ret); in btrfs_insert_delayed_dir_index()
1501 mutex_unlock(&delayed_node->mutex); in btrfs_insert_delayed_dir_index()
1504 btrfs_release_delayed_node(delayed_node); in btrfs_insert_delayed_dir_index()
1609 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); in btrfs_inode_delayed_dir_index_count() local
1611 if (!delayed_node) in btrfs_inode_delayed_dir_index_count()
1619 if (!delayed_node->index_cnt) { in btrfs_inode_delayed_dir_index_count()
1620 btrfs_release_delayed_node(delayed_node); in btrfs_inode_delayed_dir_index_count()
1624 inode->index_cnt = delayed_node->index_cnt; in btrfs_inode_delayed_dir_index_count()
1625 btrfs_release_delayed_node(delayed_node); in btrfs_inode_delayed_dir_index_count()
1633 struct btrfs_delayed_node *delayed_node; in btrfs_readdir_get_delayed_items() local
1636 delayed_node = btrfs_get_delayed_node(BTRFS_I(inode)); in btrfs_readdir_get_delayed_items()
1637 if (!delayed_node) in btrfs_readdir_get_delayed_items()
1647 mutex_lock(&delayed_node->mutex); in btrfs_readdir_get_delayed_items()
1648 item = __btrfs_first_delayed_insertion_item(delayed_node); in btrfs_readdir_get_delayed_items()
1655 item = __btrfs_first_delayed_deletion_item(delayed_node); in btrfs_readdir_get_delayed_items()
1661 mutex_unlock(&delayed_node->mutex); in btrfs_readdir_get_delayed_items()
1671 refcount_dec(&delayed_node->refs); in btrfs_readdir_get_delayed_items()
1819 struct btrfs_delayed_node *delayed_node; in btrfs_fill_inode() local
1822 delayed_node = btrfs_get_delayed_node(BTRFS_I(inode)); in btrfs_fill_inode()
1823 if (!delayed_node) in btrfs_fill_inode()
1826 mutex_lock(&delayed_node->mutex); in btrfs_fill_inode()
1827 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_fill_inode()
1828 mutex_unlock(&delayed_node->mutex); in btrfs_fill_inode()
1829 btrfs_release_delayed_node(delayed_node); in btrfs_fill_inode()
1833 inode_item = &delayed_node->inode_item; in btrfs_fill_inode()
1870 mutex_unlock(&delayed_node->mutex); in btrfs_fill_inode()
1871 btrfs_release_delayed_node(delayed_node); in btrfs_fill_inode()
1879 struct btrfs_delayed_node *delayed_node; in btrfs_delayed_update_inode() local
1882 delayed_node = btrfs_get_or_create_delayed_node(inode); in btrfs_delayed_update_inode()
1883 if (IS_ERR(delayed_node)) in btrfs_delayed_update_inode()
1884 return PTR_ERR(delayed_node); in btrfs_delayed_update_inode()
1886 mutex_lock(&delayed_node->mutex); in btrfs_delayed_update_inode()
1887 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_delayed_update_inode()
1888 fill_stack_inode_item(trans, &delayed_node->inode_item, in btrfs_delayed_update_inode()
1893 ret = btrfs_delayed_inode_reserve_metadata(trans, root, delayed_node); in btrfs_delayed_update_inode()
1897 fill_stack_inode_item(trans, &delayed_node->inode_item, &inode->vfs_inode); in btrfs_delayed_update_inode()
1898 set_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags); in btrfs_delayed_update_inode()
1899 delayed_node->count++; in btrfs_delayed_update_inode()
1902 mutex_unlock(&delayed_node->mutex); in btrfs_delayed_update_inode()
1903 btrfs_release_delayed_node(delayed_node); in btrfs_delayed_update_inode()
1910 struct btrfs_delayed_node *delayed_node; in btrfs_delayed_delete_inode_ref() local
1920 delayed_node = btrfs_get_or_create_delayed_node(inode); in btrfs_delayed_delete_inode_ref()
1921 if (IS_ERR(delayed_node)) in btrfs_delayed_delete_inode_ref()
1922 return PTR_ERR(delayed_node); in btrfs_delayed_delete_inode_ref()
1938 mutex_lock(&delayed_node->mutex); in btrfs_delayed_delete_inode_ref()
1939 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags)) in btrfs_delayed_delete_inode_ref()
1942 set_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags); in btrfs_delayed_delete_inode_ref()
1943 delayed_node->count++; in btrfs_delayed_delete_inode_ref()
1946 mutex_unlock(&delayed_node->mutex); in btrfs_delayed_delete_inode_ref()
1947 btrfs_release_delayed_node(delayed_node); in btrfs_delayed_delete_inode_ref()
1951 static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node) in __btrfs_kill_delayed_node() argument
1953 struct btrfs_root *root = delayed_node->root; in __btrfs_kill_delayed_node()
1957 mutex_lock(&delayed_node->mutex); in __btrfs_kill_delayed_node()
1958 curr_item = __btrfs_first_delayed_insertion_item(delayed_node); in __btrfs_kill_delayed_node()
1965 if (delayed_node->index_item_leaves > 0) { in __btrfs_kill_delayed_node()
1966 btrfs_delayed_item_release_leaves(delayed_node, in __btrfs_kill_delayed_node()
1967 delayed_node->index_item_leaves); in __btrfs_kill_delayed_node()
1968 delayed_node->index_item_leaves = 0; in __btrfs_kill_delayed_node()
1971 curr_item = __btrfs_first_delayed_deletion_item(delayed_node); in __btrfs_kill_delayed_node()
1979 btrfs_release_delayed_iref(delayed_node); in __btrfs_kill_delayed_node()
1981 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in __btrfs_kill_delayed_node()
1982 btrfs_delayed_inode_release_metadata(fs_info, delayed_node, false); in __btrfs_kill_delayed_node()
1983 btrfs_release_delayed_inode(delayed_node); in __btrfs_kill_delayed_node()
1985 mutex_unlock(&delayed_node->mutex); in __btrfs_kill_delayed_node()
1990 struct btrfs_delayed_node *delayed_node; in btrfs_kill_delayed_inode_items() local
1992 delayed_node = btrfs_get_delayed_node(inode); in btrfs_kill_delayed_inode_items()
1993 if (!delayed_node) in btrfs_kill_delayed_inode_items()
1996 __btrfs_kill_delayed_node(delayed_node); in btrfs_kill_delayed_inode_items()
1997 btrfs_release_delayed_node(delayed_node); in btrfs_kill_delayed_inode_items()