diff options
author | Qu Wenruo <quwenruo@cn.fujitsu.com> | 2014-02-27 21:46:13 -0500 |
---|---|---|
committer | Josef Bacik <jbacik@fb.com> | 2014-03-10 15:17:11 -0400 |
commit | 736cfa15e89a654436d4149c109bf1ae09fc67cf (patch) | |
tree | 3653221246447e904225d2bcee6048d95d46014b | |
parent | e66f0bb14465371d4c86fa70cff2acc331efa1fb (diff) |
btrfs: Replace fs_info->readahead_workers workqueue with btrfs_workqueue.
Replace the fs_info->readahead_workers with the newly created
btrfs_workqueue.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Tested-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Josef Bacik <jbacik@fb.com>
-rw-r--r-- | fs/btrfs/ctree.h | 2 | ||||
-rw-r--r-- | fs/btrfs/disk-io.c | 12 | ||||
-rw-r--r-- | fs/btrfs/reada.c | 9 | ||||
-rw-r--r-- | fs/btrfs/super.c | 2 |
4 files changed, 11 insertions, 14 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index e5c94cbaa3fa..b5f2a19177e8 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
@@ -1517,7 +1517,7 @@ struct btrfs_fs_info { | |||
1517 | struct btrfs_workqueue_struct *endio_freespace_worker; | 1517 | struct btrfs_workqueue_struct *endio_freespace_worker; |
1518 | struct btrfs_workqueue_struct *submit_workers; | 1518 | struct btrfs_workqueue_struct *submit_workers; |
1519 | struct btrfs_workqueue_struct *caching_workers; | 1519 | struct btrfs_workqueue_struct *caching_workers; |
1520 | struct btrfs_workers readahead_workers; | 1520 | struct btrfs_workqueue_struct *readahead_workers; |
1521 | 1521 | ||
1522 | /* | 1522 | /* |
1523 | * fixup workers take dirty pages that didn't properly go through | 1523 | * fixup workers take dirty pages that didn't properly go through |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 9c14e3bd078c..c0b003bb66cd 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -2008,7 +2008,7 @@ static void btrfs_stop_all_workers(struct btrfs_fs_info *fs_info) | |||
2008 | btrfs_destroy_workqueue(fs_info->submit_workers); | 2008 | btrfs_destroy_workqueue(fs_info->submit_workers); |
2009 | btrfs_stop_workers(&fs_info->delayed_workers); | 2009 | btrfs_stop_workers(&fs_info->delayed_workers); |
2010 | btrfs_destroy_workqueue(fs_info->caching_workers); | 2010 | btrfs_destroy_workqueue(fs_info->caching_workers); |
2011 | btrfs_stop_workers(&fs_info->readahead_workers); | 2011 | btrfs_destroy_workqueue(fs_info->readahead_workers); |
2012 | btrfs_destroy_workqueue(fs_info->flush_workers); | 2012 | btrfs_destroy_workqueue(fs_info->flush_workers); |
2013 | btrfs_stop_workers(&fs_info->qgroup_rescan_workers); | 2013 | btrfs_stop_workers(&fs_info->qgroup_rescan_workers); |
2014 | } | 2014 | } |
@@ -2522,14 +2522,11 @@ int open_ctree(struct super_block *sb, | |||
2522 | btrfs_init_workers(&fs_info->delayed_workers, "delayed-meta", | 2522 | btrfs_init_workers(&fs_info->delayed_workers, "delayed-meta", |
2523 | fs_info->thread_pool_size, | 2523 | fs_info->thread_pool_size, |
2524 | &fs_info->generic_worker); | 2524 | &fs_info->generic_worker); |
2525 | btrfs_init_workers(&fs_info->readahead_workers, "readahead", | 2525 | fs_info->readahead_workers = |
2526 | fs_info->thread_pool_size, | 2526 | btrfs_alloc_workqueue("readahead", flags, max_active, 2); |
2527 | &fs_info->generic_worker); | ||
2528 | btrfs_init_workers(&fs_info->qgroup_rescan_workers, "qgroup-rescan", 1, | 2527 | btrfs_init_workers(&fs_info->qgroup_rescan_workers, "qgroup-rescan", 1, |
2529 | &fs_info->generic_worker); | 2528 | &fs_info->generic_worker); |
2530 | 2529 | ||
2531 | fs_info->readahead_workers.idle_thresh = 2; | ||
2532 | |||
2533 | /* | 2530 | /* |
2534 | * btrfs_start_workers can really only fail because of ENOMEM so just | 2531 | * btrfs_start_workers can really only fail because of ENOMEM so just |
2535 | * return -ENOMEM if any of these fail. | 2532 | * return -ENOMEM if any of these fail. |
@@ -2537,7 +2534,6 @@ int open_ctree(struct super_block *sb, | |||
2537 | ret = btrfs_start_workers(&fs_info->generic_worker); | 2534 | ret = btrfs_start_workers(&fs_info->generic_worker); |
2538 | ret |= btrfs_start_workers(&fs_info->fixup_workers); | 2535 | ret |= btrfs_start_workers(&fs_info->fixup_workers); |
2539 | ret |= btrfs_start_workers(&fs_info->delayed_workers); | 2536 | ret |= btrfs_start_workers(&fs_info->delayed_workers); |
2540 | ret |= btrfs_start_workers(&fs_info->readahead_workers); | ||
2541 | ret |= btrfs_start_workers(&fs_info->qgroup_rescan_workers); | 2537 | ret |= btrfs_start_workers(&fs_info->qgroup_rescan_workers); |
2542 | if (ret) { | 2538 | if (ret) { |
2543 | err = -ENOMEM; | 2539 | err = -ENOMEM; |
@@ -2549,7 +2545,7 @@ int open_ctree(struct super_block *sb, | |||
2549 | fs_info->endio_meta_write_workers && | 2545 | fs_info->endio_meta_write_workers && |
2550 | fs_info->endio_write_workers && fs_info->endio_raid56_workers && | 2546 | fs_info->endio_write_workers && fs_info->endio_raid56_workers && |
2551 | fs_info->endio_freespace_worker && fs_info->rmw_workers && | 2547 | fs_info->endio_freespace_worker && fs_info->rmw_workers && |
2552 | fs_info->caching_workers)) { | 2548 | fs_info->caching_workers && fs_info->readahead_workers)) { |
2553 | err = -ENOMEM; | 2549 | err = -ENOMEM; |
2554 | goto fail_sb_buffer; | 2550 | goto fail_sb_buffer; |
2555 | } | 2551 | } |
diff --git a/fs/btrfs/reada.c b/fs/btrfs/reada.c index 31c797c48c3e..9e01d3677355 100644 --- a/fs/btrfs/reada.c +++ b/fs/btrfs/reada.c | |||
@@ -91,7 +91,8 @@ struct reada_zone { | |||
91 | }; | 91 | }; |
92 | 92 | ||
93 | struct reada_machine_work { | 93 | struct reada_machine_work { |
94 | struct btrfs_work work; | 94 | struct btrfs_work_struct |
95 | work; | ||
95 | struct btrfs_fs_info *fs_info; | 96 | struct btrfs_fs_info *fs_info; |
96 | }; | 97 | }; |
97 | 98 | ||
@@ -733,7 +734,7 @@ static int reada_start_machine_dev(struct btrfs_fs_info *fs_info, | |||
733 | 734 | ||
734 | } | 735 | } |
735 | 736 | ||
736 | static void reada_start_machine_worker(struct btrfs_work *work) | 737 | static void reada_start_machine_worker(struct btrfs_work_struct *work) |
737 | { | 738 | { |
738 | struct reada_machine_work *rmw; | 739 | struct reada_machine_work *rmw; |
739 | struct btrfs_fs_info *fs_info; | 740 | struct btrfs_fs_info *fs_info; |
@@ -793,10 +794,10 @@ static void reada_start_machine(struct btrfs_fs_info *fs_info) | |||
793 | /* FIXME we cannot handle this properly right now */ | 794 | /* FIXME we cannot handle this properly right now */ |
794 | BUG(); | 795 | BUG(); |
795 | } | 796 | } |
796 | rmw->work.func = reada_start_machine_worker; | 797 | btrfs_init_work(&rmw->work, reada_start_machine_worker, NULL, NULL); |
797 | rmw->fs_info = fs_info; | 798 | rmw->fs_info = fs_info; |
798 | 799 | ||
799 | btrfs_queue_worker(&fs_info->readahead_workers, &rmw->work); | 800 | btrfs_queue_work(fs_info->readahead_workers, &rmw->work); |
800 | } | 801 | } |
801 | 802 | ||
802 | #ifdef DEBUG | 803 | #ifdef DEBUG |
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index b84fbe04f05a..ce9d012a77e8 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
@@ -1336,7 +1336,7 @@ static void btrfs_resize_thread_pool(struct btrfs_fs_info *fs_info, | |||
1336 | btrfs_workqueue_set_max(fs_info->endio_write_workers, new_pool_size); | 1336 | btrfs_workqueue_set_max(fs_info->endio_write_workers, new_pool_size); |
1337 | btrfs_workqueue_set_max(fs_info->endio_freespace_worker, new_pool_size); | 1337 | btrfs_workqueue_set_max(fs_info->endio_freespace_worker, new_pool_size); |
1338 | btrfs_set_max_workers(&fs_info->delayed_workers, new_pool_size); | 1338 | btrfs_set_max_workers(&fs_info->delayed_workers, new_pool_size); |
1339 | btrfs_set_max_workers(&fs_info->readahead_workers, new_pool_size); | 1339 | btrfs_workqueue_set_max(fs_info->readahead_workers, new_pool_size); |
1340 | btrfs_set_max_workers(&fs_info->scrub_wr_completion_workers, | 1340 | btrfs_set_max_workers(&fs_info->scrub_wr_completion_workers, |
1341 | new_pool_size); | 1341 | new_pool_size); |
1342 | } | 1342 | } |