aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorLiu Bo <bo.li.liu@oracle.com>2013-03-16 22:10:31 -0400
committerJosef Bacik <jbacik@fusionio.com>2013-05-06 15:54:19 -0400
commit7abadb6431a057f1e3cf8d395acb8766b947ac85 (patch)
treeda24303fb382097028c5d86f3dca7a4fed4fbc8f /fs
parent3173a18f70554fe7880bb2d85c7da566e364eb3c (diff)
Btrfs: share stop worker code
Share the exactly same code of stopping workers. Signed-off-by: Liu Bo <bo.li.liu@oracle.com> Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/disk-io.c55
1 files changed, 23 insertions, 32 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index f47754a2fee4..898263f56d96 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -1935,6 +1935,27 @@ static noinline int next_root_backup(struct btrfs_fs_info *info,
1935 return 0; 1935 return 0;
1936} 1936}
1937 1937
1938/* helper to cleanup workers */
1939static void btrfs_stop_all_workers(struct btrfs_fs_info *fs_info)
1940{
1941 btrfs_stop_workers(&fs_info->generic_worker);
1942 btrfs_stop_workers(&fs_info->fixup_workers);
1943 btrfs_stop_workers(&fs_info->delalloc_workers);
1944 btrfs_stop_workers(&fs_info->workers);
1945 btrfs_stop_workers(&fs_info->endio_workers);
1946 btrfs_stop_workers(&fs_info->endio_meta_workers);
1947 btrfs_stop_workers(&fs_info->endio_raid56_workers);
1948 btrfs_stop_workers(&fs_info->rmw_workers);
1949 btrfs_stop_workers(&fs_info->endio_meta_write_workers);
1950 btrfs_stop_workers(&fs_info->endio_write_workers);
1951 btrfs_stop_workers(&fs_info->endio_freespace_worker);
1952 btrfs_stop_workers(&fs_info->submit_workers);
1953 btrfs_stop_workers(&fs_info->delayed_workers);
1954 btrfs_stop_workers(&fs_info->caching_workers);
1955 btrfs_stop_workers(&fs_info->readahead_workers);
1956 btrfs_stop_workers(&fs_info->flush_workers);
1957}
1958
1938/* helper to cleanup tree roots */ 1959/* helper to cleanup tree roots */
1939static void free_root_pointers(struct btrfs_fs_info *info, int chunk_root) 1960static void free_root_pointers(struct btrfs_fs_info *info, int chunk_root)
1940{ 1961{
@@ -2760,22 +2781,7 @@ fail_tree_roots:
2760 invalidate_inode_pages2(fs_info->btree_inode->i_mapping); 2781 invalidate_inode_pages2(fs_info->btree_inode->i_mapping);
2761 2782
2762fail_sb_buffer: 2783fail_sb_buffer:
2763 btrfs_stop_workers(&fs_info->generic_worker); 2784 btrfs_stop_all_workers(fs_info);
2764 btrfs_stop_workers(&fs_info->readahead_workers);
2765 btrfs_stop_workers(&fs_info->fixup_workers);
2766 btrfs_stop_workers(&fs_info->delalloc_workers);
2767 btrfs_stop_workers(&fs_info->workers);
2768 btrfs_stop_workers(&fs_info->endio_workers);
2769 btrfs_stop_workers(&fs_info->endio_meta_workers);
2770 btrfs_stop_workers(&fs_info->endio_raid56_workers);
2771 btrfs_stop_workers(&fs_info->rmw_workers);
2772 btrfs_stop_workers(&fs_info->endio_meta_write_workers);
2773 btrfs_stop_workers(&fs_info->endio_write_workers);
2774 btrfs_stop_workers(&fs_info->endio_freespace_worker);
2775 btrfs_stop_workers(&fs_info->submit_workers);
2776 btrfs_stop_workers(&fs_info->delayed_workers);
2777 btrfs_stop_workers(&fs_info->caching_workers);
2778 btrfs_stop_workers(&fs_info->flush_workers);
2779fail_alloc: 2785fail_alloc:
2780fail_iput: 2786fail_iput:
2781 btrfs_mapping_tree_free(&fs_info->mapping_tree); 2787 btrfs_mapping_tree_free(&fs_info->mapping_tree);
@@ -3437,22 +3443,7 @@ int close_ctree(struct btrfs_root *root)
3437 3443
3438 iput(fs_info->btree_inode); 3444 iput(fs_info->btree_inode);
3439 3445
3440 btrfs_stop_workers(&fs_info->generic_worker); 3446 btrfs_stop_all_workers(fs_info);
3441 btrfs_stop_workers(&fs_info->fixup_workers);
3442 btrfs_stop_workers(&fs_info->delalloc_workers);
3443 btrfs_stop_workers(&fs_info->workers);
3444 btrfs_stop_workers(&fs_info->endio_workers);
3445 btrfs_stop_workers(&fs_info->endio_meta_workers);
3446 btrfs_stop_workers(&fs_info->endio_raid56_workers);
3447 btrfs_stop_workers(&fs_info->rmw_workers);
3448 btrfs_stop_workers(&fs_info->endio_meta_write_workers);
3449 btrfs_stop_workers(&fs_info->endio_write_workers);
3450 btrfs_stop_workers(&fs_info->endio_freespace_worker);
3451 btrfs_stop_workers(&fs_info->submit_workers);
3452 btrfs_stop_workers(&fs_info->delayed_workers);
3453 btrfs_stop_workers(&fs_info->caching_workers);
3454 btrfs_stop_workers(&fs_info->readahead_workers);
3455 btrfs_stop_workers(&fs_info->flush_workers);
3456 3447
3457#ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY 3448#ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY
3458 if (btrfs_test_opt(root, CHECK_INTEGRITY)) 3449 if (btrfs_test_opt(root, CHECK_INTEGRITY))