Lines Matching refs:delayed_node
47 struct btrfs_delayed_node *delayed_node,
50 delayed_node->root = root;
51 delayed_node->inode_id = inode_id;
52 refcount_set(&delayed_node->refs, 0);
53 delayed_node->ins_root = RB_ROOT_CACHED;
54 delayed_node->del_root = RB_ROOT_CACHED;
55 mutex_init(&delayed_node->mutex);
56 INIT_LIST_HEAD(&delayed_node->n_list);
57 INIT_LIST_HEAD(&delayed_node->p_list);
67 node = READ_ONCE(btrfs_inode->delayed_node);
77 if (btrfs_inode->delayed_node) {
79 BUG_ON(btrfs_inode->delayed_node != node);
102 btrfs_inode->delayed_node = node;
151 btrfs_inode->delayed_node = node;
159 * Call it when holding delayed_node->mutex
183 /* Call it when holding delayed_node->mutex */
246 struct btrfs_delayed_node *delayed_node,
251 if (!delayed_node)
254 delayed_root = delayed_node->root->fs_info->delayed_root;
256 mutex_lock(&delayed_node->mutex);
257 if (delayed_node->count)
258 btrfs_queue_delayed_node(delayed_root, delayed_node, mod);
260 btrfs_dequeue_delayed_node(delayed_root, delayed_node);
261 mutex_unlock(&delayed_node->mutex);
263 if (refcount_dec_and_test(&delayed_node->refs)) {
264 struct btrfs_root *root = delayed_node->root;
271 ASSERT(refcount_read(&delayed_node->refs) == 0);
273 delayed_node->inode_id);
275 kmem_cache_free(delayed_node_cache, delayed_node);
321 item->delayed_node = node;
332 * @delayed_node: pointer to the delayed node
359 static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node,
369 root = &delayed_node->ins_root;
371 root = &delayed_node->del_root;
395 ins->index >= delayed_node->index_cnt)
396 delayed_node->index_cnt = ins->index + 1;
398 delayed_node->count++;
399 atomic_inc(&delayed_node->root->fs_info->delayed_root->items);
415 struct btrfs_delayed_node *delayed_node = delayed_item->delayed_node;
424 lockdep_assert_held(&delayed_node->mutex);
426 delayed_root = delayed_node->root->fs_info->delayed_root;
431 root = &delayed_node->ins_root;
433 root = &delayed_node->del_root;
437 delayed_node->count--;
452 struct btrfs_delayed_node *delayed_node)
457 p = rb_first_cached(&delayed_node->ins_root);
465 struct btrfs_delayed_node *delayed_node)
470 p = rb_first_cached(&delayed_node->del_root);
515 item->delayed_node->inode_id,
544 item->delayed_node->inode_id,
652 struct btrfs_delayed_node *node = first_item->delayed_node;
840 const u64 ino = item->delayed_node->inode_id;
972 static void btrfs_release_delayed_inode(struct btrfs_delayed_node *delayed_node)
976 if (delayed_node &&
977 test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
978 BUG_ON(!delayed_node->root);
979 clear_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags);
980 delayed_node->count--;
982 delayed_root = delayed_node->root->fs_info->delayed_root;
987 static void btrfs_release_delayed_iref(struct btrfs_delayed_node *delayed_node)
990 if (test_and_clear_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags)) {
993 ASSERT(delayed_node->root);
994 delayed_node->count--;
996 delayed_root = delayed_node->root->fs_info->delayed_root;
1205 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode);
1210 if (!delayed_node)
1213 mutex_lock(&delayed_node->mutex);
1214 if (!delayed_node->count) {
1215 mutex_unlock(&delayed_node->mutex);
1216 btrfs_release_delayed_node(delayed_node);
1219 mutex_unlock(&delayed_node->mutex);
1223 btrfs_release_delayed_node(delayed_node);
1228 trans->block_rsv = &delayed_node->root->fs_info->delayed_block_rsv;
1230 ret = __btrfs_commit_inode_delayed_items(trans, path, delayed_node);
1232 btrfs_release_delayed_node(delayed_node);
1243 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode);
1248 if (!delayed_node)
1251 mutex_lock(&delayed_node->mutex);
1252 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1253 mutex_unlock(&delayed_node->mutex);
1254 btrfs_release_delayed_node(delayed_node);
1257 mutex_unlock(&delayed_node->mutex);
1259 trans = btrfs_join_transaction(delayed_node->root);
1274 mutex_lock(&delayed_node->mutex);
1275 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags))
1276 ret = __btrfs_update_delayed_inode(trans, delayed_node->root,
1277 path, delayed_node);
1280 mutex_unlock(&delayed_node->mutex);
1288 btrfs_release_delayed_node(delayed_node);
1295 struct btrfs_delayed_node *delayed_node;
1297 delayed_node = READ_ONCE(inode->delayed_node);
1298 if (!delayed_node)
1301 inode->delayed_node = NULL;
1302 btrfs_release_delayed_node(delayed_node);
1317 struct btrfs_delayed_node *delayed_node = NULL;
1334 delayed_node = btrfs_first_prepared_delayed_node(delayed_root);
1335 if (!delayed_node)
1338 root = delayed_node->root;
1343 btrfs_release_prepared_delayed_node(delayed_node);
1351 __btrfs_commit_inode_delayed_items(trans, path, delayed_node);
1358 btrfs_release_prepared_delayed_node(delayed_node);
1464 struct btrfs_delayed_node *delayed_node;
1471 delayed_node = btrfs_get_or_create_delayed_node(dir);
1472 if (IS_ERR(delayed_node))
1473 return PTR_ERR(delayed_node);
1476 delayed_node,
1495 mutex_lock(&delayed_node->mutex);
1505 ret = __btrfs_add_delayed_item(delayed_node, delayed_item);
1508 "error adding delayed dir index item, name: %.*s, index: %llu, root: %llu, dir: %llu, dir->index_cnt: %llu, delayed_node->index_cnt: %llu, error: %d",
1509 name_len, name, index, btrfs_root_id(delayed_node->root),
1510 delayed_node->inode_id, dir->index_cnt,
1511 delayed_node->index_cnt, ret);
1514 mutex_unlock(&delayed_node->mutex);
1518 if (delayed_node->index_item_leaves == 0 ||
1519 delayed_node->curr_index_batch_size + data_len > leaf_data_size) {
1520 delayed_node->curr_index_batch_size = data_len;
1523 delayed_node->curr_index_batch_size += data_len;
1536 mutex_unlock(&delayed_node->mutex);
1540 delayed_node->index_item_leaves++;
1544 mutex_unlock(&delayed_node->mutex);
1547 btrfs_release_delayed_node(delayed_node);
1652 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode);
1654 if (!delayed_node)
1662 if (!delayed_node->index_cnt) {
1663 btrfs_release_delayed_node(delayed_node);
1667 inode->index_cnt = delayed_node->index_cnt;
1668 btrfs_release_delayed_node(delayed_node);
1677 struct btrfs_delayed_node *delayed_node;
1680 delayed_node = btrfs_get_delayed_node(BTRFS_I(inode));
1681 if (!delayed_node)
1691 mutex_lock(&delayed_node->mutex);
1692 item = __btrfs_first_delayed_insertion_item(delayed_node);
1699 item = __btrfs_first_delayed_deletion_item(delayed_node);
1705 mutex_unlock(&delayed_node->mutex);
1715 refcount_dec(&delayed_node->refs);
1860 struct btrfs_delayed_node *delayed_node;
1863 delayed_node = btrfs_get_delayed_node(BTRFS_I(inode));
1864 if (!delayed_node)
1867 mutex_lock(&delayed_node->mutex);
1868 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1869 mutex_unlock(&delayed_node->mutex);
1870 btrfs_release_delayed_node(delayed_node);
1874 inode_item = &delayed_node->inode_item;
1911 mutex_unlock(&delayed_node->mutex);
1912 btrfs_release_delayed_node(delayed_node);
1920 struct btrfs_delayed_node *delayed_node;
1923 delayed_node = btrfs_get_or_create_delayed_node(inode);
1924 if (IS_ERR(delayed_node))
1925 return PTR_ERR(delayed_node);
1927 mutex_lock(&delayed_node->mutex);
1928 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
1929 fill_stack_inode_item(trans, &delayed_node->inode_item,
1934 ret = btrfs_delayed_inode_reserve_metadata(trans, root, delayed_node);
1938 fill_stack_inode_item(trans, &delayed_node->inode_item, &inode->vfs_inode);
1939 set_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags);
1940 delayed_node->count++;
1943 mutex_unlock(&delayed_node->mutex);
1944 btrfs_release_delayed_node(delayed_node);
1951 struct btrfs_delayed_node *delayed_node;
1961 delayed_node = btrfs_get_or_create_delayed_node(inode);
1962 if (IS_ERR(delayed_node))
1963 return PTR_ERR(delayed_node);
1979 mutex_lock(&delayed_node->mutex);
1980 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags))
1983 set_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags);
1984 delayed_node->count++;
1987 mutex_unlock(&delayed_node->mutex);
1988 btrfs_release_delayed_node(delayed_node);
1992 static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node)
1994 struct btrfs_root *root = delayed_node->root;
1998 mutex_lock(&delayed_node->mutex);
1999 curr_item = __btrfs_first_delayed_insertion_item(delayed_node);
2006 if (delayed_node->index_item_leaves > 0) {
2007 btrfs_delayed_item_release_leaves(delayed_node,
2008 delayed_node->index_item_leaves);
2009 delayed_node->index_item_leaves = 0;
2012 curr_item = __btrfs_first_delayed_deletion_item(delayed_node);
2020 btrfs_release_delayed_iref(delayed_node);
2022 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) {
2023 btrfs_delayed_inode_release_metadata(fs_info, delayed_node, false);
2024 btrfs_release_delayed_inode(delayed_node);
2026 mutex_unlock(&delayed_node->mutex);
2031 struct btrfs_delayed_node *delayed_node;
2033 delayed_node = btrfs_get_delayed_node(inode);
2034 if (!delayed_node)
2037 __btrfs_kill_delayed_node(delayed_node);
2038 btrfs_release_delayed_node(delayed_node);