aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQu Wenruo <quwenruo@cn.fujitsu.com>2014-02-27 21:46:13 -0500
committerJosef Bacik <jbacik@fb.com>2014-03-10 15:17:11 -0400
commit736cfa15e89a654436d4149c109bf1ae09fc67cf (patch)
tree3653221246447e904225d2bcee6048d95d46014b
parente66f0bb14465371d4c86fa70cff2acc331efa1fb (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.h2
-rw-r--r--fs/btrfs/disk-io.c12
-rw-r--r--fs/btrfs/reada.c9
-rw-r--r--fs/btrfs/super.c2
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
93struct reada_machine_work { 93struct 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
736static void reada_start_machine_worker(struct btrfs_work *work) 737static 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}