Lines Matching refs:delayed_node

39 				struct btrfs_delayed_node *delayed_node,  in btrfs_init_delayed_node()  argument
42 delayed_node->root = root; in btrfs_init_delayed_node()
43 delayed_node->inode_id = inode_id; in btrfs_init_delayed_node()
44 refcount_set(&delayed_node->refs, 0); in btrfs_init_delayed_node()
45 delayed_node->ins_root = RB_ROOT; in btrfs_init_delayed_node()
46 delayed_node->del_root = RB_ROOT; in btrfs_init_delayed_node()
47 mutex_init(&delayed_node->mutex); in btrfs_init_delayed_node()
48 INIT_LIST_HEAD(&delayed_node->n_list); in btrfs_init_delayed_node()
49 INIT_LIST_HEAD(&delayed_node->p_list); in btrfs_init_delayed_node()
71 node = READ_ONCE(btrfs_inode->delayed_node); in btrfs_get_delayed_node()
81 if (btrfs_inode->delayed_node) { in btrfs_get_delayed_node()
83 BUG_ON(btrfs_inode->delayed_node != node); in btrfs_get_delayed_node()
106 btrfs_inode->delayed_node = node; in btrfs_get_delayed_node()
155 btrfs_inode->delayed_node = node; in btrfs_get_or_create_delayed_node()
250 struct btrfs_delayed_node *delayed_node, in __btrfs_release_delayed_node() argument
255 if (!delayed_node) in __btrfs_release_delayed_node()
258 delayed_root = delayed_node->root->fs_info->delayed_root; in __btrfs_release_delayed_node()
260 mutex_lock(&delayed_node->mutex); in __btrfs_release_delayed_node()
261 if (delayed_node->count) in __btrfs_release_delayed_node()
262 btrfs_queue_delayed_node(delayed_root, delayed_node, mod); in __btrfs_release_delayed_node()
264 btrfs_dequeue_delayed_node(delayed_root, delayed_node); in __btrfs_release_delayed_node()
265 mutex_unlock(&delayed_node->mutex); in __btrfs_release_delayed_node()
267 if (refcount_dec_and_test(&delayed_node->refs)) { in __btrfs_release_delayed_node()
268 struct btrfs_root *root = delayed_node->root; in __btrfs_release_delayed_node()
275 ASSERT(refcount_read(&delayed_node->refs) == 0); in __btrfs_release_delayed_node()
277 delayed_node->inode_id); in __btrfs_release_delayed_node()
279 kmem_cache_free(delayed_node_cache, delayed_node); in __btrfs_release_delayed_node()
322 item->delayed_node = NULL; in btrfs_alloc_delayed_item()
390 struct btrfs_delayed_node *delayed_node, in __btrfs_lookup_delayed_insertion_item() argument
393 return __btrfs_lookup_delayed_item(&delayed_node->ins_root, key, in __btrfs_lookup_delayed_insertion_item()
397 static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node, in __btrfs_add_delayed_item() argument
408 root = &delayed_node->ins_root; in __btrfs_add_delayed_item()
410 root = &delayed_node->del_root; in __btrfs_add_delayed_item()
432 ins->delayed_node = delayed_node; in __btrfs_add_delayed_item()
437 ins->key.offset >= delayed_node->index_cnt) in __btrfs_add_delayed_item()
438 delayed_node->index_cnt = ins->key.offset + 1; in __btrfs_add_delayed_item()
440 delayed_node->count++; in __btrfs_add_delayed_item()
441 atomic_inc(&delayed_node->root->fs_info->delayed_root->items); in __btrfs_add_delayed_item()
474 delayed_root = delayed_item->delayed_node->root->fs_info->delayed_root; in __btrfs_remove_delayed_item()
481 root = &delayed_item->delayed_node->ins_root; in __btrfs_remove_delayed_item()
483 root = &delayed_item->delayed_node->del_root; in __btrfs_remove_delayed_item()
486 delayed_item->delayed_node->count--; in __btrfs_remove_delayed_item()
501 struct btrfs_delayed_node *delayed_node) in __btrfs_first_delayed_insertion_item() argument
506 p = rb_first(&delayed_node->ins_root); in __btrfs_first_delayed_insertion_item()
514 struct btrfs_delayed_node *delayed_node) in __btrfs_first_delayed_deletion_item() argument
519 p = rb_first(&delayed_node->del_root); in __btrfs_first_delayed_deletion_item()
975 static void btrfs_release_delayed_inode(struct btrfs_delayed_node *delayed_node) in btrfs_release_delayed_inode() argument
979 if (delayed_node && in btrfs_release_delayed_inode()
980 test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_release_delayed_inode()
981 BUG_ON(!delayed_node->root); in btrfs_release_delayed_inode()
982 clear_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags); in btrfs_release_delayed_inode()
983 delayed_node->count--; in btrfs_release_delayed_inode()
985 delayed_root = delayed_node->root->fs_info->delayed_root; in btrfs_release_delayed_inode()
990 static void btrfs_release_delayed_iref(struct btrfs_delayed_node *delayed_node) in btrfs_release_delayed_iref() argument
994 ASSERT(delayed_node->root); in btrfs_release_delayed_iref()
995 clear_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags); in btrfs_release_delayed_iref()
996 delayed_node->count--; in btrfs_release_delayed_iref()
998 delayed_root = delayed_node->root->fs_info->delayed_root; in btrfs_release_delayed_iref()
1188 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); in btrfs_commit_inode_delayed_items() local
1193 if (!delayed_node) in btrfs_commit_inode_delayed_items()
1196 mutex_lock(&delayed_node->mutex); in btrfs_commit_inode_delayed_items()
1197 if (!delayed_node->count) { in btrfs_commit_inode_delayed_items()
1198 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_items()
1199 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_items()
1202 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_items()
1206 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_items()
1212 trans->block_rsv = &delayed_node->root->fs_info->delayed_block_rsv; in btrfs_commit_inode_delayed_items()
1214 ret = __btrfs_commit_inode_delayed_items(trans, path, delayed_node); in btrfs_commit_inode_delayed_items()
1216 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_items()
1227 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); in btrfs_commit_inode_delayed_inode() local
1232 if (!delayed_node) in btrfs_commit_inode_delayed_inode()
1235 mutex_lock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1236 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_commit_inode_delayed_inode()
1237 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1238 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_inode()
1241 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1243 trans = btrfs_join_transaction(delayed_node->root); in btrfs_commit_inode_delayed_inode()
1259 mutex_lock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1260 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) in btrfs_commit_inode_delayed_inode()
1261 ret = __btrfs_update_delayed_inode(trans, delayed_node->root, in btrfs_commit_inode_delayed_inode()
1262 path, delayed_node); in btrfs_commit_inode_delayed_inode()
1265 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1273 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_inode()
1280 struct btrfs_delayed_node *delayed_node; in btrfs_remove_delayed_node() local
1282 delayed_node = READ_ONCE(inode->delayed_node); in btrfs_remove_delayed_node()
1283 if (!delayed_node) in btrfs_remove_delayed_node()
1286 inode->delayed_node = NULL; in btrfs_remove_delayed_node()
1287 btrfs_release_delayed_node(delayed_node); in btrfs_remove_delayed_node()
1302 struct btrfs_delayed_node *delayed_node = NULL; in btrfs_async_run_delayed_root() local
1319 delayed_node = btrfs_first_prepared_delayed_node(delayed_root); in btrfs_async_run_delayed_root()
1320 if (!delayed_node) in btrfs_async_run_delayed_root()
1324 root = delayed_node->root; in btrfs_async_run_delayed_root()
1329 btrfs_release_prepared_delayed_node(delayed_node); in btrfs_async_run_delayed_root()
1337 __btrfs_commit_inode_delayed_items(trans, path, delayed_node); in btrfs_async_run_delayed_root()
1344 btrfs_release_prepared_delayed_node(delayed_node); in btrfs_async_run_delayed_root()
1426 struct btrfs_delayed_node *delayed_node; in btrfs_insert_delayed_dir_index() local
1431 delayed_node = btrfs_get_or_create_delayed_node(dir); in btrfs_insert_delayed_dir_index()
1432 if (IS_ERR(delayed_node)) in btrfs_insert_delayed_dir_index()
1433 return PTR_ERR(delayed_node); in btrfs_insert_delayed_dir_index()
1460 mutex_lock(&delayed_node->mutex); in btrfs_insert_delayed_dir_index()
1461 ret = __btrfs_add_delayed_insertion_item(delayed_node, delayed_item); in btrfs_insert_delayed_dir_index()
1465 name_len, name, delayed_node->root->objectid, in btrfs_insert_delayed_dir_index()
1466 delayed_node->inode_id, ret); in btrfs_insert_delayed_dir_index()
1469 mutex_unlock(&delayed_node->mutex); in btrfs_insert_delayed_dir_index()
1472 btrfs_release_delayed_node(delayed_node); in btrfs_insert_delayed_dir_index()
1547 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); in btrfs_inode_delayed_dir_index_count() local
1549 if (!delayed_node) in btrfs_inode_delayed_dir_index_count()
1557 if (!delayed_node->index_cnt) { in btrfs_inode_delayed_dir_index_count()
1558 btrfs_release_delayed_node(delayed_node); in btrfs_inode_delayed_dir_index_count()
1562 inode->index_cnt = delayed_node->index_cnt; in btrfs_inode_delayed_dir_index_count()
1563 btrfs_release_delayed_node(delayed_node); in btrfs_inode_delayed_dir_index_count()
1571 struct btrfs_delayed_node *delayed_node; in btrfs_readdir_get_delayed_items() local
1574 delayed_node = btrfs_get_delayed_node(BTRFS_I(inode)); in btrfs_readdir_get_delayed_items()
1575 if (!delayed_node) in btrfs_readdir_get_delayed_items()
1585 mutex_lock(&delayed_node->mutex); in btrfs_readdir_get_delayed_items()
1586 item = __btrfs_first_delayed_insertion_item(delayed_node); in btrfs_readdir_get_delayed_items()
1593 item = __btrfs_first_delayed_deletion_item(delayed_node); in btrfs_readdir_get_delayed_items()
1599 mutex_unlock(&delayed_node->mutex); in btrfs_readdir_get_delayed_items()
1609 refcount_dec(&delayed_node->refs); in btrfs_readdir_get_delayed_items()
1752 struct btrfs_delayed_node *delayed_node; in btrfs_fill_inode() local
1755 delayed_node = btrfs_get_delayed_node(BTRFS_I(inode)); in btrfs_fill_inode()
1756 if (!delayed_node) in btrfs_fill_inode()
1759 mutex_lock(&delayed_node->mutex); in btrfs_fill_inode()
1760 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_fill_inode()
1761 mutex_unlock(&delayed_node->mutex); in btrfs_fill_inode()
1762 btrfs_release_delayed_node(delayed_node); in btrfs_fill_inode()
1766 inode_item = &delayed_node->inode_item; in btrfs_fill_inode()
1800 mutex_unlock(&delayed_node->mutex); in btrfs_fill_inode()
1801 btrfs_release_delayed_node(delayed_node); in btrfs_fill_inode()
1808 struct btrfs_delayed_node *delayed_node; in btrfs_delayed_update_inode() local
1811 delayed_node = btrfs_get_or_create_delayed_node(BTRFS_I(inode)); in btrfs_delayed_update_inode()
1812 if (IS_ERR(delayed_node)) in btrfs_delayed_update_inode()
1813 return PTR_ERR(delayed_node); in btrfs_delayed_update_inode()
1815 mutex_lock(&delayed_node->mutex); in btrfs_delayed_update_inode()
1816 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_delayed_update_inode()
1817 fill_stack_inode_item(trans, &delayed_node->inode_item, inode); in btrfs_delayed_update_inode()
1822 delayed_node); in btrfs_delayed_update_inode()
1826 fill_stack_inode_item(trans, &delayed_node->inode_item, inode); in btrfs_delayed_update_inode()
1827 set_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags); in btrfs_delayed_update_inode()
1828 delayed_node->count++; in btrfs_delayed_update_inode()
1831 mutex_unlock(&delayed_node->mutex); in btrfs_delayed_update_inode()
1832 btrfs_release_delayed_node(delayed_node); in btrfs_delayed_update_inode()
1839 struct btrfs_delayed_node *delayed_node; in btrfs_delayed_delete_inode_ref() local
1849 delayed_node = btrfs_get_or_create_delayed_node(inode); in btrfs_delayed_delete_inode_ref()
1850 if (IS_ERR(delayed_node)) in btrfs_delayed_delete_inode_ref()
1851 return PTR_ERR(delayed_node); in btrfs_delayed_delete_inode_ref()
1867 mutex_lock(&delayed_node->mutex); in btrfs_delayed_delete_inode_ref()
1868 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags)) in btrfs_delayed_delete_inode_ref()
1871 set_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags); in btrfs_delayed_delete_inode_ref()
1872 delayed_node->count++; in btrfs_delayed_delete_inode_ref()
1875 mutex_unlock(&delayed_node->mutex); in btrfs_delayed_delete_inode_ref()
1876 btrfs_release_delayed_node(delayed_node); in btrfs_delayed_delete_inode_ref()
1880 static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node) in __btrfs_kill_delayed_node() argument
1882 struct btrfs_root *root = delayed_node->root; in __btrfs_kill_delayed_node()
1886 mutex_lock(&delayed_node->mutex); in __btrfs_kill_delayed_node()
1887 curr_item = __btrfs_first_delayed_insertion_item(delayed_node); in __btrfs_kill_delayed_node()
1895 curr_item = __btrfs_first_delayed_deletion_item(delayed_node); in __btrfs_kill_delayed_node()
1903 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags)) in __btrfs_kill_delayed_node()
1904 btrfs_release_delayed_iref(delayed_node); in __btrfs_kill_delayed_node()
1906 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in __btrfs_kill_delayed_node()
1907 btrfs_delayed_inode_release_metadata(fs_info, delayed_node, false); in __btrfs_kill_delayed_node()
1908 btrfs_release_delayed_inode(delayed_node); in __btrfs_kill_delayed_node()
1910 mutex_unlock(&delayed_node->mutex); in __btrfs_kill_delayed_node()
1915 struct btrfs_delayed_node *delayed_node; in btrfs_kill_delayed_inode_items() local
1917 delayed_node = btrfs_get_delayed_node(inode); in btrfs_kill_delayed_inode_items()
1918 if (!delayed_node) in btrfs_kill_delayed_inode_items()
1921 __btrfs_kill_delayed_node(delayed_node); in btrfs_kill_delayed_inode_items()
1922 btrfs_release_delayed_node(delayed_node); in btrfs_kill_delayed_inode_items()