Loading fs/btrfs/delayed-inode.c +18 −0 Original line number Diff line number Diff line Loading @@ -1879,3 +1879,21 @@ void btrfs_kill_all_delayed_nodes(struct btrfs_root *root) } } } void btrfs_destroy_delayed_inodes(struct btrfs_root *root) { struct btrfs_delayed_root *delayed_root; struct btrfs_delayed_node *curr_node, *prev_node; delayed_root = btrfs_get_delayed_root(root); curr_node = btrfs_first_delayed_node(delayed_root); while (curr_node) { __btrfs_kill_delayed_node(curr_node); prev_node = curr_node; curr_node = btrfs_next_delayed_node(curr_node); btrfs_release_delayed_node(prev_node); } } fs/btrfs/delayed-inode.h +3 −0 Original line number Diff line number Diff line Loading @@ -124,6 +124,9 @@ int btrfs_fill_inode(struct inode *inode, u32 *rdev); /* Used for drop dead root */ void btrfs_kill_all_delayed_nodes(struct btrfs_root *root); /* Used for clean the transaction */ void btrfs_destroy_delayed_inodes(struct btrfs_root *root); /* Used for readdir() */ void btrfs_get_delayed_items(struct inode *inode, struct list_head *ins_list, struct list_head *del_list); Loading fs/btrfs/disk-io.c +6 −0 Original line number Diff line number Diff line Loading @@ -3608,6 +3608,9 @@ void btrfs_cleanup_one_transaction(struct btrfs_transaction *cur_trans, cur_trans->commit_done = 1; wake_up(&cur_trans->commit_wait); btrfs_destroy_delayed_inodes(root); btrfs_assert_delayed_root_empty(root); btrfs_destroy_pending_snapshots(cur_trans); btrfs_destroy_marked_extents(root, &cur_trans->dirty_pages, Loading Loading @@ -3662,6 +3665,9 @@ int btrfs_cleanup_transaction(struct btrfs_root *root) if (waitqueue_active(&t->commit_wait)) wake_up(&t->commit_wait); btrfs_destroy_delayed_inodes(root); btrfs_assert_delayed_root_empty(root); btrfs_destroy_pending_snapshots(t); btrfs_destroy_delalloc_inodes(root); Loading Loading
fs/btrfs/delayed-inode.c +18 −0 Original line number Diff line number Diff line Loading @@ -1879,3 +1879,21 @@ void btrfs_kill_all_delayed_nodes(struct btrfs_root *root) } } } void btrfs_destroy_delayed_inodes(struct btrfs_root *root) { struct btrfs_delayed_root *delayed_root; struct btrfs_delayed_node *curr_node, *prev_node; delayed_root = btrfs_get_delayed_root(root); curr_node = btrfs_first_delayed_node(delayed_root); while (curr_node) { __btrfs_kill_delayed_node(curr_node); prev_node = curr_node; curr_node = btrfs_next_delayed_node(curr_node); btrfs_release_delayed_node(prev_node); } }
fs/btrfs/delayed-inode.h +3 −0 Original line number Diff line number Diff line Loading @@ -124,6 +124,9 @@ int btrfs_fill_inode(struct inode *inode, u32 *rdev); /* Used for drop dead root */ void btrfs_kill_all_delayed_nodes(struct btrfs_root *root); /* Used for clean the transaction */ void btrfs_destroy_delayed_inodes(struct btrfs_root *root); /* Used for readdir() */ void btrfs_get_delayed_items(struct inode *inode, struct list_head *ins_list, struct list_head *del_list); Loading
fs/btrfs/disk-io.c +6 −0 Original line number Diff line number Diff line Loading @@ -3608,6 +3608,9 @@ void btrfs_cleanup_one_transaction(struct btrfs_transaction *cur_trans, cur_trans->commit_done = 1; wake_up(&cur_trans->commit_wait); btrfs_destroy_delayed_inodes(root); btrfs_assert_delayed_root_empty(root); btrfs_destroy_pending_snapshots(cur_trans); btrfs_destroy_marked_extents(root, &cur_trans->dirty_pages, Loading Loading @@ -3662,6 +3665,9 @@ int btrfs_cleanup_transaction(struct btrfs_root *root) if (waitqueue_active(&t->commit_wait)) wake_up(&t->commit_wait); btrfs_destroy_delayed_inodes(root); btrfs_assert_delayed_root_empty(root); btrfs_destroy_pending_snapshots(t); btrfs_destroy_delalloc_inodes(root); Loading