Lines Matching refs:delayed_node

40 				struct btrfs_delayed_node *delayed_node,  in btrfs_init_delayed_node()  argument
43 delayed_node->root = root; in btrfs_init_delayed_node()
44 delayed_node->inode_id = inode_id; in btrfs_init_delayed_node()
45 refcount_set(&delayed_node->refs, 0); in btrfs_init_delayed_node()
46 delayed_node->ins_root = RB_ROOT_CACHED; in btrfs_init_delayed_node()
47 delayed_node->del_root = RB_ROOT_CACHED; in btrfs_init_delayed_node()
48 mutex_init(&delayed_node->mutex); in btrfs_init_delayed_node()
49 INIT_LIST_HEAD(&delayed_node->n_list); in btrfs_init_delayed_node()
50 INIT_LIST_HEAD(&delayed_node->p_list); in btrfs_init_delayed_node()
72 node = READ_ONCE(btrfs_inode->delayed_node); in btrfs_get_delayed_node()
82 if (btrfs_inode->delayed_node) { in btrfs_get_delayed_node()
84 BUG_ON(btrfs_inode->delayed_node != node); in btrfs_get_delayed_node()
107 btrfs_inode->delayed_node = node; in btrfs_get_delayed_node()
156 btrfs_inode->delayed_node = node; in btrfs_get_or_create_delayed_node()
251 struct btrfs_delayed_node *delayed_node, in __btrfs_release_delayed_node() argument
256 if (!delayed_node) in __btrfs_release_delayed_node()
259 delayed_root = delayed_node->root->fs_info->delayed_root; in __btrfs_release_delayed_node()
261 mutex_lock(&delayed_node->mutex); in __btrfs_release_delayed_node()
262 if (delayed_node->count) in __btrfs_release_delayed_node()
263 btrfs_queue_delayed_node(delayed_root, delayed_node, mod); in __btrfs_release_delayed_node()
265 btrfs_dequeue_delayed_node(delayed_root, delayed_node); in __btrfs_release_delayed_node()
266 mutex_unlock(&delayed_node->mutex); in __btrfs_release_delayed_node()
268 if (refcount_dec_and_test(&delayed_node->refs)) { in __btrfs_release_delayed_node()
269 struct btrfs_root *root = delayed_node->root; in __btrfs_release_delayed_node()
276 ASSERT(refcount_read(&delayed_node->refs) == 0); in __btrfs_release_delayed_node()
278 delayed_node->inode_id); in __btrfs_release_delayed_node()
280 kmem_cache_free(delayed_node_cache, delayed_node); in __btrfs_release_delayed_node()
323 item->delayed_node = NULL; in btrfs_alloc_delayed_item()
391 struct btrfs_delayed_node *delayed_node, in __btrfs_lookup_delayed_insertion_item() argument
394 return __btrfs_lookup_delayed_item(&delayed_node->ins_root.rb_root, key, in __btrfs_lookup_delayed_insertion_item()
398 static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node, in __btrfs_add_delayed_item() argument
410 root = &delayed_node->ins_root; in __btrfs_add_delayed_item()
412 root = &delayed_node->del_root; in __btrfs_add_delayed_item()
436 ins->delayed_node = delayed_node; in __btrfs_add_delayed_item()
441 ins->key.offset >= delayed_node->index_cnt) in __btrfs_add_delayed_item()
442 delayed_node->index_cnt = ins->key.offset + 1; in __btrfs_add_delayed_item()
444 delayed_node->count++; in __btrfs_add_delayed_item()
445 atomic_inc(&delayed_node->root->fs_info->delayed_root->items); in __btrfs_add_delayed_item()
479 if (!delayed_item->delayed_node) in __btrfs_remove_delayed_item()
481 delayed_root = delayed_item->delayed_node->root->fs_info->delayed_root; in __btrfs_remove_delayed_item()
488 root = &delayed_item->delayed_node->ins_root; in __btrfs_remove_delayed_item()
490 root = &delayed_item->delayed_node->del_root; in __btrfs_remove_delayed_item()
493 delayed_item->delayed_node->count--; in __btrfs_remove_delayed_item()
508 struct btrfs_delayed_node *delayed_node) in __btrfs_first_delayed_insertion_item() argument
513 p = rb_first_cached(&delayed_node->ins_root); in __btrfs_first_delayed_insertion_item()
521 struct btrfs_delayed_node *delayed_node) in __btrfs_first_delayed_deletion_item() argument
526 p = rb_first_cached(&delayed_node->del_root); in __btrfs_first_delayed_deletion_item()
978 static void btrfs_release_delayed_inode(struct btrfs_delayed_node *delayed_node) in btrfs_release_delayed_inode() argument
982 if (delayed_node && in btrfs_release_delayed_inode()
983 test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_release_delayed_inode()
984 BUG_ON(!delayed_node->root); in btrfs_release_delayed_inode()
985 clear_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags); in btrfs_release_delayed_inode()
986 delayed_node->count--; in btrfs_release_delayed_inode()
988 delayed_root = delayed_node->root->fs_info->delayed_root; in btrfs_release_delayed_inode()
993 static void btrfs_release_delayed_iref(struct btrfs_delayed_node *delayed_node) in btrfs_release_delayed_iref() argument
997 ASSERT(delayed_node->root); in btrfs_release_delayed_iref()
998 clear_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags); in btrfs_release_delayed_iref()
999 delayed_node->count--; in btrfs_release_delayed_iref()
1001 delayed_root = delayed_node->root->fs_info->delayed_root; in btrfs_release_delayed_iref()
1191 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); in btrfs_commit_inode_delayed_items() local
1196 if (!delayed_node) in btrfs_commit_inode_delayed_items()
1199 mutex_lock(&delayed_node->mutex); in btrfs_commit_inode_delayed_items()
1200 if (!delayed_node->count) { in btrfs_commit_inode_delayed_items()
1201 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_items()
1202 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_items()
1205 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_items()
1209 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_items()
1215 trans->block_rsv = &delayed_node->root->fs_info->delayed_block_rsv; in btrfs_commit_inode_delayed_items()
1217 ret = __btrfs_commit_inode_delayed_items(trans, path, delayed_node); in btrfs_commit_inode_delayed_items()
1219 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_items()
1230 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); in btrfs_commit_inode_delayed_inode() local
1235 if (!delayed_node) in btrfs_commit_inode_delayed_inode()
1238 mutex_lock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1239 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_commit_inode_delayed_inode()
1240 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1241 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_inode()
1244 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1246 trans = btrfs_join_transaction(delayed_node->root); in btrfs_commit_inode_delayed_inode()
1262 mutex_lock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1263 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) in btrfs_commit_inode_delayed_inode()
1264 ret = __btrfs_update_delayed_inode(trans, delayed_node->root, in btrfs_commit_inode_delayed_inode()
1265 path, delayed_node); in btrfs_commit_inode_delayed_inode()
1268 mutex_unlock(&delayed_node->mutex); in btrfs_commit_inode_delayed_inode()
1276 btrfs_release_delayed_node(delayed_node); in btrfs_commit_inode_delayed_inode()
1283 struct btrfs_delayed_node *delayed_node; in btrfs_remove_delayed_node() local
1285 delayed_node = READ_ONCE(inode->delayed_node); in btrfs_remove_delayed_node()
1286 if (!delayed_node) in btrfs_remove_delayed_node()
1289 inode->delayed_node = NULL; in btrfs_remove_delayed_node()
1290 btrfs_release_delayed_node(delayed_node); in btrfs_remove_delayed_node()
1305 struct btrfs_delayed_node *delayed_node = NULL; in btrfs_async_run_delayed_root() local
1322 delayed_node = btrfs_first_prepared_delayed_node(delayed_root); in btrfs_async_run_delayed_root()
1323 if (!delayed_node) in btrfs_async_run_delayed_root()
1327 root = delayed_node->root; in btrfs_async_run_delayed_root()
1332 btrfs_release_prepared_delayed_node(delayed_node); in btrfs_async_run_delayed_root()
1340 __btrfs_commit_inode_delayed_items(trans, path, delayed_node); in btrfs_async_run_delayed_root()
1347 btrfs_release_prepared_delayed_node(delayed_node); in btrfs_async_run_delayed_root()
1429 struct btrfs_delayed_node *delayed_node; in btrfs_insert_delayed_dir_index() local
1434 delayed_node = btrfs_get_or_create_delayed_node(dir); in btrfs_insert_delayed_dir_index()
1435 if (IS_ERR(delayed_node)) in btrfs_insert_delayed_dir_index()
1436 return PTR_ERR(delayed_node); in btrfs_insert_delayed_dir_index()
1463 mutex_lock(&delayed_node->mutex); in btrfs_insert_delayed_dir_index()
1464 ret = __btrfs_add_delayed_insertion_item(delayed_node, delayed_item); in btrfs_insert_delayed_dir_index()
1468 name_len, name, delayed_node->root->root_key.objectid, in btrfs_insert_delayed_dir_index()
1469 delayed_node->inode_id, ret); in btrfs_insert_delayed_dir_index()
1472 mutex_unlock(&delayed_node->mutex); in btrfs_insert_delayed_dir_index()
1475 btrfs_release_delayed_node(delayed_node); in btrfs_insert_delayed_dir_index()
1557 struct btrfs_delayed_node *delayed_node = btrfs_get_delayed_node(inode); in btrfs_inode_delayed_dir_index_count() local
1559 if (!delayed_node) in btrfs_inode_delayed_dir_index_count()
1567 if (!delayed_node->index_cnt) { in btrfs_inode_delayed_dir_index_count()
1568 btrfs_release_delayed_node(delayed_node); in btrfs_inode_delayed_dir_index_count()
1572 inode->index_cnt = delayed_node->index_cnt; in btrfs_inode_delayed_dir_index_count()
1573 btrfs_release_delayed_node(delayed_node); in btrfs_inode_delayed_dir_index_count()
1581 struct btrfs_delayed_node *delayed_node; in btrfs_readdir_get_delayed_items() local
1584 delayed_node = btrfs_get_delayed_node(BTRFS_I(inode)); in btrfs_readdir_get_delayed_items()
1585 if (!delayed_node) in btrfs_readdir_get_delayed_items()
1595 mutex_lock(&delayed_node->mutex); in btrfs_readdir_get_delayed_items()
1596 item = __btrfs_first_delayed_insertion_item(delayed_node); in btrfs_readdir_get_delayed_items()
1603 item = __btrfs_first_delayed_deletion_item(delayed_node); in btrfs_readdir_get_delayed_items()
1609 mutex_unlock(&delayed_node->mutex); in btrfs_readdir_get_delayed_items()
1619 refcount_dec(&delayed_node->refs); in btrfs_readdir_get_delayed_items()
1762 struct btrfs_delayed_node *delayed_node; in btrfs_fill_inode() local
1765 delayed_node = btrfs_get_delayed_node(BTRFS_I(inode)); in btrfs_fill_inode()
1766 if (!delayed_node) in btrfs_fill_inode()
1769 mutex_lock(&delayed_node->mutex); in btrfs_fill_inode()
1770 if (!test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_fill_inode()
1771 mutex_unlock(&delayed_node->mutex); in btrfs_fill_inode()
1772 btrfs_release_delayed_node(delayed_node); in btrfs_fill_inode()
1776 inode_item = &delayed_node->inode_item; in btrfs_fill_inode()
1810 mutex_unlock(&delayed_node->mutex); in btrfs_fill_inode()
1811 btrfs_release_delayed_node(delayed_node); in btrfs_fill_inode()
1818 struct btrfs_delayed_node *delayed_node; in btrfs_delayed_update_inode() local
1821 delayed_node = btrfs_get_or_create_delayed_node(BTRFS_I(inode)); in btrfs_delayed_update_inode()
1822 if (IS_ERR(delayed_node)) in btrfs_delayed_update_inode()
1823 return PTR_ERR(delayed_node); in btrfs_delayed_update_inode()
1825 mutex_lock(&delayed_node->mutex); in btrfs_delayed_update_inode()
1826 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in btrfs_delayed_update_inode()
1827 fill_stack_inode_item(trans, &delayed_node->inode_item, inode); in btrfs_delayed_update_inode()
1832 delayed_node); in btrfs_delayed_update_inode()
1836 fill_stack_inode_item(trans, &delayed_node->inode_item, inode); in btrfs_delayed_update_inode()
1837 set_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags); in btrfs_delayed_update_inode()
1838 delayed_node->count++; in btrfs_delayed_update_inode()
1841 mutex_unlock(&delayed_node->mutex); in btrfs_delayed_update_inode()
1842 btrfs_release_delayed_node(delayed_node); in btrfs_delayed_update_inode()
1849 struct btrfs_delayed_node *delayed_node; in btrfs_delayed_delete_inode_ref() local
1859 delayed_node = btrfs_get_or_create_delayed_node(inode); in btrfs_delayed_delete_inode_ref()
1860 if (IS_ERR(delayed_node)) in btrfs_delayed_delete_inode_ref()
1861 return PTR_ERR(delayed_node); in btrfs_delayed_delete_inode_ref()
1877 mutex_lock(&delayed_node->mutex); in btrfs_delayed_delete_inode_ref()
1878 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags)) in btrfs_delayed_delete_inode_ref()
1881 set_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags); in btrfs_delayed_delete_inode_ref()
1882 delayed_node->count++; in btrfs_delayed_delete_inode_ref()
1885 mutex_unlock(&delayed_node->mutex); in btrfs_delayed_delete_inode_ref()
1886 btrfs_release_delayed_node(delayed_node); in btrfs_delayed_delete_inode_ref()
1890 static void __btrfs_kill_delayed_node(struct btrfs_delayed_node *delayed_node) in __btrfs_kill_delayed_node() argument
1892 struct btrfs_root *root = delayed_node->root; in __btrfs_kill_delayed_node()
1896 mutex_lock(&delayed_node->mutex); in __btrfs_kill_delayed_node()
1897 curr_item = __btrfs_first_delayed_insertion_item(delayed_node); in __btrfs_kill_delayed_node()
1905 curr_item = __btrfs_first_delayed_deletion_item(delayed_node); in __btrfs_kill_delayed_node()
1913 if (test_bit(BTRFS_DELAYED_NODE_DEL_IREF, &delayed_node->flags)) in __btrfs_kill_delayed_node()
1914 btrfs_release_delayed_iref(delayed_node); in __btrfs_kill_delayed_node()
1916 if (test_bit(BTRFS_DELAYED_NODE_INODE_DIRTY, &delayed_node->flags)) { in __btrfs_kill_delayed_node()
1917 btrfs_delayed_inode_release_metadata(fs_info, delayed_node, false); in __btrfs_kill_delayed_node()
1918 btrfs_release_delayed_inode(delayed_node); in __btrfs_kill_delayed_node()
1920 mutex_unlock(&delayed_node->mutex); in __btrfs_kill_delayed_node()
1925 struct btrfs_delayed_node *delayed_node; in btrfs_kill_delayed_inode_items() local
1927 delayed_node = btrfs_get_delayed_node(inode); in btrfs_kill_delayed_inode_items()
1928 if (!delayed_node) in btrfs_kill_delayed_inode_items()
1931 __btrfs_kill_delayed_node(delayed_node); in btrfs_kill_delayed_inode_items()
1932 btrfs_release_delayed_node(delayed_node); in btrfs_kill_delayed_inode_items()