• Home
  • Raw
  • Download

Lines Matching refs:delayed_node

41 				struct btrfs_delayed_node *delayed_node,  in btrfs_init_delayed_node()  argument
44 delayed_node->root = root; in btrfs_init_delayed_node()
45 delayed_node->inode_id = inode_id; in btrfs_init_delayed_node()
46 refcount_set(&delayed_node->refs, 0); in btrfs_init_delayed_node()
47 delayed_node->ins_root = RB_ROOT_CACHED; in btrfs_init_delayed_node()
48 delayed_node->del_root = RB_ROOT_CACHED; in btrfs_init_delayed_node()
49 mutex_init(&delayed_node->mutex); in btrfs_init_delayed_node()
50 INIT_LIST_HEAD(&delayed_node->n_list); in btrfs_init_delayed_node()
51 INIT_LIST_HEAD(&delayed_node->p_list); in btrfs_init_delayed_node()
73 node = READ_ONCE(btrfs_inode->delayed_node); in btrfs_get_delayed_node()
83 if (btrfs_inode->delayed_node) { in btrfs_get_delayed_node()
85 BUG_ON(btrfs_inode->delayed_node != node); in btrfs_get_delayed_node()
108 btrfs_inode->delayed_node = node; in btrfs_get_delayed_node()
157 btrfs_inode->delayed_node = node; in btrfs_get_or_create_delayed_node()
252 struct btrfs_delayed_node *delayed_node, in __btrfs_release_delayed_node() argument
257 if (!delayed_node) in __btrfs_release_delayed_node()
260 delayed_root = delayed_node->root->fs_info->delayed_root; in __btrfs_release_delayed_node()
262 mutex_lock(&delayed_node->mutex); in __btrfs_release_delayed_node()
263 if (delayed_node->count) in __btrfs_release_delayed_node()
264 btrfs_queue_delayed_node(delayed_root, delayed_node, mod); in __btrfs_release_delayed_node()
266 btrfs_dequeue_delayed_node(delayed_root, delayed_node); in __btrfs_release_delayed_node()
267 mutex_unlock(&delayed_node->mutex); in __btrfs_release_delayed_node()
269 if (refcount_dec_and_test(&delayed_node->refs)) { in __btrfs_release_delayed_node()
270 struct btrfs_root *root = delayed_node->root; in __btrfs_release_delayed_node()
277 ASSERT(refcount_read(&delayed_node->refs) == 0); in __btrfs_release_delayed_node()
279 delayed_node->inode_id); in __btrfs_release_delayed_node()
281 kmem_cache_free(delayed_node_cache, delayed_node); in __btrfs_release_delayed_node()
324 item->delayed_node = NULL; in btrfs_alloc_delayed_item()
392 struct btrfs_delayed_node *delayed_node, in __btrfs_lookup_delayed_insertion_item() argument
395 return __btrfs_lookup_delayed_item(&delayed_node->ins_root.rb_root, key, in __btrfs_lookup_delayed_insertion_item()
399 static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node, in __btrfs_add_delayed_item() argument
411 root = &delayed_node->ins_root; in __btrfs_add_delayed_item()
413 root = &delayed_node->del_root; in __btrfs_add_delayed_item()
437 ins->delayed_node = delayed_node; in __btrfs_add_delayed_item()
442 ins->key.offset >= delayed_node->index_cnt) in __btrfs_add_delayed_item()
443 delayed_node->index_cnt = ins->key.offset + 1; in __btrfs_add_delayed_item()
445 delayed_node->count++; in __btrfs_add_delayed_item()
446 atomic_inc(&delayed_node->root->fs_info->delayed_root->items); in __btrfs_add_delayed_item()
480 if (!delayed_item->delayed_node) in __btrfs_remove_delayed_item()
482 delayed_root = delayed_item->delayed_node->root->fs_info->delayed_root; in __btrfs_remove_delayed_item()
489 root = &delayed_item->delayed_node->ins_root; in __btrfs_remove_delayed_item()
491 root = &delayed_item->delayed_node->del_root; in __btrfs_remove_delayed_item()
494 delayed_item->delayed_node->count--; in __btrfs_remove_delayed_item()
509 struct btrfs_delayed_node *delayed_node) in __btrfs_first_delayed_insertion_item() argument
514 p = rb_first_cached(&delayed_node->ins_root); in __btrfs_first_delayed_insertion_item()
522 struct btrfs_delayed_node *delayed_node) in __btrfs_first_delayed_deletion_item() argument
527 p = rb_first_cached(&delayed_node->del_root); in __btrfs_first_delayed_deletion_item()
985 static void btrfs_release_delayed_inode(struct btrfs_delayed_node *delayed_node) in btrfs_release_delayed_inode() argument
989 if (delayed_node && in btrfs_release_delayed_inode()
990 test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_release_delayed_inode()
991 BUG_ON(!delayed_node->root); in btrfs_release_delayed_inode()
992 clear_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags); in btrfs_release_delayed_inode()
993 delayed_node->count--; in btrfs_release_delayed_inode()
995 delayed_root = delayed_node->root->fs_info->delayed_root; in btrfs_release_delayed_inode()
1000 static void btrfs_release_delayed_iref(struct btrfs_delayed_node *delayed_node) in btrfs_release_delayed_iref() argument
1004 ASSERT(delayed_node->root); in btrfs_release_delayed_iref()
1005 clear_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags); in btrfs_release_delayed_iref()
1006 delayed_node->count--; in btrfs_release_delayed_iref()
1008 delayed_root = delayed_node->root->fs_info->delayed_root; in btrfs_release_delayed_iref()
1223 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); in btrfs_commit_inode_delayed_items() local
1228 if (!delayed_node) in btrfs_commit_inode_delayed_items()
1231 mutex_lock(&delayed_node->mutex); in btrfs_commit_inode_delayed_items()
1232 if (!delayed_node->count) { in btrfs_commit_inode_delayed_items()
1233 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_items()
1234 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_items()
1237 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_items()
1241 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_items()
1247 trans->block_rsv = &delayed_node->root->fs_info->delayed_block_rsv; in btrfs_commit_inode_delayed_items()
1249 ret = __btrfs_commit_inode_delayed_items(trans, path, delayed_node); in btrfs_commit_inode_delayed_items()
1251 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_items()
1262 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); in btrfs_commit_inode_delayed_inode() local
1267 if (!delayed_node) in btrfs_commit_inode_delayed_inode()
1270 mutex_lock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1271 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_commit_inode_delayed_inode()
1272 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1273 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_inode()
1276 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1278 trans = btrfs_join_transaction(delayed_node->root); in btrfs_commit_inode_delayed_inode()
1294 mutex_lock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1295 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) in btrfs_commit_inode_delayed_inode()
1296 ret = __btrfs_update_delayed_inode(trans, delayed_node->root, in btrfs_commit_inode_delayed_inode()
1297 path, delayed_node); in btrfs_commit_inode_delayed_inode()
1300 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1308 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_inode()
1315 struct btrfs_delayed_node *delayed_node; in btrfs_remove_delayed_node() local
1317 delayed_node = READ_ONCE(inode->delayed_node); in btrfs_remove_delayed_node()
1318 if (!delayed_node) in btrfs_remove_delayed_node()
1321 inode->delayed_node = NULL; in btrfs_remove_delayed_node()
1322 btrfs_release_delayed_node(delayed_node); in btrfs_remove_delayed_node()
1337 struct btrfs_delayed_node *delayed_node = NULL; in btrfs_async_run_delayed_root() local
1354 delayed_node = btrfs_first_prepared_delayed_node(delayed_root); in btrfs_async_run_delayed_root()
1355 if (!delayed_node) in btrfs_async_run_delayed_root()
1359 root = delayed_node->root; in btrfs_async_run_delayed_root()
1364 btrfs_release_prepared_delayed_node(delayed_node); in btrfs_async_run_delayed_root()
1372 __btrfs_commit_inode_delayed_items(trans, path, delayed_node); in btrfs_async_run_delayed_root()
1379 btrfs_release_prepared_delayed_node(delayed_node); in btrfs_async_run_delayed_root()
1461 struct btrfs_delayed_node *delayed_node; in btrfs_insert_delayed_dir_index() local
1466 delayed_node = btrfs_get_or_create_delayed_node(dir); in btrfs_insert_delayed_dir_index()
1467 if (IS_ERR(delayed_node)) in btrfs_insert_delayed_dir_index()
1468 return PTR_ERR(delayed_node); in btrfs_insert_delayed_dir_index()
1495 mutex_lock(&delayed_node->mutex); in btrfs_insert_delayed_dir_index()
1496 ret = __btrfs_add_delayed_insertion_item(delayed_node, delayed_item); in btrfs_insert_delayed_dir_index()
1500 name_len, name, delayed_node->root->root_key.objectid, in btrfs_insert_delayed_dir_index()
1501 delayed_node->inode_id, ret); in btrfs_insert_delayed_dir_index()
1504 mutex_unlock(&delayed_node->mutex); in btrfs_insert_delayed_dir_index()
1507 btrfs_release_delayed_node(delayed_node); in btrfs_insert_delayed_dir_index()
1589 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); in btrfs_inode_delayed_dir_index_count() local
1591 if (!delayed_node) in btrfs_inode_delayed_dir_index_count()
1599 if (!delayed_node->index_cnt) { in btrfs_inode_delayed_dir_index_count()
1600 btrfs_release_delayed_node(delayed_node); in btrfs_inode_delayed_dir_index_count()
1604 inode->index_cnt = delayed_node->index_cnt; in btrfs_inode_delayed_dir_index_count()
1605 btrfs_release_delayed_node(delayed_node); in btrfs_inode_delayed_dir_index_count()
1613 struct btrfs_delayed_node *delayed_node; in btrfs_readdir_get_delayed_items() local
1616 delayed_node = btrfs_get_delayed_node(BTRFS_I(inode)); in btrfs_readdir_get_delayed_items()
1617 if (!delayed_node) in btrfs_readdir_get_delayed_items()
1627 mutex_lock(&delayed_node->mutex); in btrfs_readdir_get_delayed_items()
1628 item = __btrfs_first_delayed_insertion_item(delayed_node); in btrfs_readdir_get_delayed_items()
1635 item = __btrfs_first_delayed_deletion_item(delayed_node); in btrfs_readdir_get_delayed_items()
1641 mutex_unlock(&delayed_node->mutex); in btrfs_readdir_get_delayed_items()
1651 refcount_dec(&delayed_node->refs); in btrfs_readdir_get_delayed_items()
1794 struct btrfs_delayed_node *delayed_node; in btrfs_fill_inode() local
1797 delayed_node = btrfs_get_delayed_node(BTRFS_I(inode)); in btrfs_fill_inode()
1798 if (!delayed_node) in btrfs_fill_inode()
1801 mutex_lock(&delayed_node->mutex); in btrfs_fill_inode()
1802 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_fill_inode()
1803 mutex_unlock(&delayed_node->mutex); in btrfs_fill_inode()
1804 btrfs_release_delayed_node(delayed_node); in btrfs_fill_inode()
1808 inode_item = &delayed_node->inode_item; in btrfs_fill_inode()
1842 mutex_unlock(&delayed_node->mutex); in btrfs_fill_inode()
1843 btrfs_release_delayed_node(delayed_node); in btrfs_fill_inode()
1850 struct btrfs_delayed_node *delayed_node; in btrfs_delayed_update_inode() local
1853 delayed_node = btrfs_get_or_create_delayed_node(BTRFS_I(inode)); in btrfs_delayed_update_inode()
1854 if (IS_ERR(delayed_node)) in btrfs_delayed_update_inode()
1855 return PTR_ERR(delayed_node); in btrfs_delayed_update_inode()
1857 mutex_lock(&delayed_node->mutex); in btrfs_delayed_update_inode()
1858 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_delayed_update_inode()
1859 fill_stack_inode_item(trans, &delayed_node->inode_item, inode); in btrfs_delayed_update_inode()
1864 delayed_node); in btrfs_delayed_update_inode()
1868 fill_stack_inode_item(trans, &delayed_node->inode_item, inode); in btrfs_delayed_update_inode()
1869 set_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags); in btrfs_delayed_update_inode()
1870 delayed_node->count++; in btrfs_delayed_update_inode()
1873 mutex_unlock(&delayed_node->mutex); in btrfs_delayed_update_inode()
1874 btrfs_release_delayed_node(delayed_node); in btrfs_delayed_update_inode()
1881 struct btrfs_delayed_node *delayed_node; in btrfs_delayed_delete_inode_ref() local
1891 delayed_node = btrfs_get_or_create_delayed_node(inode); in btrfs_delayed_delete_inode_ref()
1892 if (IS_ERR(delayed_node)) in btrfs_delayed_delete_inode_ref()
1893 return PTR_ERR(delayed_node); in btrfs_delayed_delete_inode_ref()
1909 mutex_lock(&delayed_node->mutex); in btrfs_delayed_delete_inode_ref()
1910 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags)) in btrfs_delayed_delete_inode_ref()
1913 set_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags); in btrfs_delayed_delete_inode_ref()
1914 delayed_node->count++; in btrfs_delayed_delete_inode_ref()
1917 mutex_unlock(&delayed_node->mutex); in btrfs_delayed_delete_inode_ref()
1918 btrfs_release_delayed_node(delayed_node); in btrfs_delayed_delete_inode_ref()
1922 static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node) in __btrfs_kill_delayed_node() argument
1924 struct btrfs_root *root = delayed_node->root; in __btrfs_kill_delayed_node()
1928 mutex_lock(&delayed_node->mutex); in __btrfs_kill_delayed_node()
1929 curr_item = __btrfs_first_delayed_insertion_item(delayed_node); in __btrfs_kill_delayed_node()
1937 curr_item = __btrfs_first_delayed_deletion_item(delayed_node); in __btrfs_kill_delayed_node()
1945 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags)) in __btrfs_kill_delayed_node()
1946 btrfs_release_delayed_iref(delayed_node); in __btrfs_kill_delayed_node()
1948 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in __btrfs_kill_delayed_node()
1949 btrfs_delayed_inode_release_metadata(fs_info, delayed_node, false); in __btrfs_kill_delayed_node()
1950 btrfs_release_delayed_inode(delayed_node); in __btrfs_kill_delayed_node()
1952 mutex_unlock(&delayed_node->mutex); in __btrfs_kill_delayed_node()
1957 struct btrfs_delayed_node *delayed_node; in btrfs_kill_delayed_inode_items() local
1959 delayed_node = btrfs_get_delayed_node(inode); in btrfs_kill_delayed_inode_items()
1960 if (!delayed_node) in btrfs_kill_delayed_inode_items()
1963 __btrfs_kill_delayed_node(delayed_node); in btrfs_kill_delayed_inode_items()
1964 btrfs_release_delayed_node(delayed_node); in btrfs_kill_delayed_inode_items()