aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQu Wenruo <quwenruo@cn.fujitsu.com>2014-02-27 21:46:09 -0500
committerJosef Bacik <jbacik@fb.com>2014-03-10 15:17:07 -0400
commita44903abe9dc23ffa305898368a7a910dbae13c5 (patch)
tree926814c93112bf608fa3db44ed33e0eb4562bd7e
parenta8c93d4ef6f6727764a61a2ee1c1878a755637c5 (diff)
btrfs: Replace fs_info->flush_workers with btrfs_workqueue.
Replace the fs_info->submit_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.h4
-rw-r--r--fs/btrfs/disk-io.c10
-rw-r--r--fs/btrfs/inode.c8
-rw-r--r--fs/btrfs/ordered-data.c13
-rw-r--r--fs/btrfs/ordered-data.h2
5 files changed, 18 insertions, 19 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index abed94213e6a..c31a102d34de 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -1507,7 +1507,7 @@ struct btrfs_fs_info {
1507 struct btrfs_workers generic_worker; 1507 struct btrfs_workers generic_worker;
1508 struct btrfs_workqueue_struct *workers; 1508 struct btrfs_workqueue_struct *workers;
1509 struct btrfs_workqueue_struct *delalloc_workers; 1509 struct btrfs_workqueue_struct *delalloc_workers;
1510 struct btrfs_workers flush_workers; 1510 struct btrfs_workqueue_struct *flush_workers;
1511 struct btrfs_workers endio_workers; 1511 struct btrfs_workers endio_workers;
1512 struct btrfs_workers endio_meta_workers; 1512 struct btrfs_workers endio_meta_workers;
1513 struct btrfs_workers endio_raid56_workers; 1513 struct btrfs_workers endio_raid56_workers;
@@ -3681,7 +3681,7 @@ struct btrfs_delalloc_work {
3681 int delay_iput; 3681 int delay_iput;
3682 struct completion completion; 3682 struct completion completion;
3683 struct list_head list; 3683 struct list_head list;
3684 struct btrfs_work work; 3684 struct btrfs_work_struct work;
3685}; 3685};
3686 3686
3687struct btrfs_delalloc_work *btrfs_alloc_delalloc_work(struct inode *inode, 3687struct btrfs_delalloc_work *btrfs_alloc_delalloc_work(struct inode *inode,
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 420328bacf49..5b82b0b31ec8 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -2010,7 +2010,7 @@ static void btrfs_stop_all_workers(struct btrfs_fs_info *fs_info)
2010 btrfs_stop_workers(&fs_info->delayed_workers); 2010 btrfs_stop_workers(&fs_info->delayed_workers);
2011 btrfs_stop_workers(&fs_info->caching_workers); 2011 btrfs_stop_workers(&fs_info->caching_workers);
2012 btrfs_stop_workers(&fs_info->readahead_workers); 2012 btrfs_stop_workers(&fs_info->readahead_workers);
2013 btrfs_stop_workers(&fs_info->flush_workers); 2013 btrfs_destroy_workqueue(fs_info->flush_workers);
2014 btrfs_stop_workers(&fs_info->qgroup_rescan_workers); 2014 btrfs_stop_workers(&fs_info->qgroup_rescan_workers);
2015} 2015}
2016 2016
@@ -2483,9 +2483,8 @@ int open_ctree(struct super_block *sb,
2483 fs_info->delalloc_workers = 2483 fs_info->delalloc_workers =
2484 btrfs_alloc_workqueue("delalloc", flags, max_active, 2); 2484 btrfs_alloc_workqueue("delalloc", flags, max_active, 2);
2485 2485
2486 btrfs_init_workers(&fs_info->flush_workers, "flush_delalloc", 2486 fs_info->flush_workers =
2487 fs_info->thread_pool_size, NULL); 2487 btrfs_alloc_workqueue("flush_delalloc", flags, max_active, 0);
2488
2489 2488
2490 btrfs_init_workers(&fs_info->caching_workers, "cache", 2489 btrfs_init_workers(&fs_info->caching_workers, "cache",
2491 fs_info->thread_pool_size, NULL); 2490 fs_info->thread_pool_size, NULL);
@@ -2560,14 +2559,13 @@ int open_ctree(struct super_block *sb,
2560 ret |= btrfs_start_workers(&fs_info->delayed_workers); 2559 ret |= btrfs_start_workers(&fs_info->delayed_workers);
2561 ret |= btrfs_start_workers(&fs_info->caching_workers); 2560 ret |= btrfs_start_workers(&fs_info->caching_workers);
2562 ret |= btrfs_start_workers(&fs_info->readahead_workers); 2561 ret |= btrfs_start_workers(&fs_info->readahead_workers);
2563 ret |= btrfs_start_workers(&fs_info->flush_workers);
2564 ret |= btrfs_start_workers(&fs_info->qgroup_rescan_workers); 2562 ret |= btrfs_start_workers(&fs_info->qgroup_rescan_workers);
2565 if (ret) { 2563 if (ret) {
2566 err = -ENOMEM; 2564 err = -ENOMEM;
2567 goto fail_sb_buffer; 2565 goto fail_sb_buffer;
2568 } 2566 }
2569 if (!(fs_info->workers && fs_info->delalloc_workers && 2567 if (!(fs_info->workers && fs_info->delalloc_workers &&
2570 fs_info->submit_workers)) { 2568 fs_info->submit_workers && fs_info->flush_workers)) {
2571 err = -ENOMEM; 2569 err = -ENOMEM;
2572 goto fail_sb_buffer; 2570 goto fail_sb_buffer;
2573 } 2571 }
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index a41a5a7aa3cb..6c043bed0c32 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -8386,7 +8386,7 @@ out_notrans:
8386 return ret; 8386 return ret;
8387} 8387}
8388 8388
8389static void btrfs_run_delalloc_work(struct btrfs_work *work) 8389static void btrfs_run_delalloc_work(struct btrfs_work_struct *work)
8390{ 8390{
8391 struct btrfs_delalloc_work *delalloc_work; 8391 struct btrfs_delalloc_work *delalloc_work;
8392 struct inode *inode; 8392 struct inode *inode;
@@ -8424,7 +8424,7 @@ struct btrfs_delalloc_work *btrfs_alloc_delalloc_work(struct inode *inode,
8424 work->inode = inode; 8424 work->inode = inode;
8425 work->wait = wait; 8425 work->wait = wait;
8426 work->delay_iput = delay_iput; 8426 work->delay_iput = delay_iput;
8427 work->work.func = btrfs_run_delalloc_work; 8427 btrfs_init_work(&work->work, btrfs_run_delalloc_work, NULL, NULL);
8428 8428
8429 return work; 8429 return work;
8430} 8430}
@@ -8476,8 +8476,8 @@ static int __start_delalloc_inodes(struct btrfs_root *root, int delay_iput)
8476 goto out; 8476 goto out;
8477 } 8477 }
8478 list_add_tail(&work->list, &works); 8478 list_add_tail(&work->list, &works);
8479 btrfs_queue_worker(&root->fs_info->flush_workers, 8479 btrfs_queue_work(root->fs_info->flush_workers,
8480 &work->work); 8480 &work->work);
8481 8481
8482 cond_resched(); 8482 cond_resched();
8483 spin_lock(&root->delalloc_lock); 8483 spin_lock(&root->delalloc_lock);
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index 138a7d7e9c90..6fa8219b5d03 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -576,7 +576,7 @@ void btrfs_remove_ordered_extent(struct inode *inode,
576 wake_up(&entry->wait); 576 wake_up(&entry->wait);
577} 577}
578 578
579static void btrfs_run_ordered_extent_work(struct btrfs_work *work) 579static void btrfs_run_ordered_extent_work(struct btrfs_work_struct *work)
580{ 580{
581 struct btrfs_ordered_extent *ordered; 581 struct btrfs_ordered_extent *ordered;
582 582
@@ -609,10 +609,11 @@ int btrfs_wait_ordered_extents(struct btrfs_root *root, int nr)
609 atomic_inc(&ordered->refs); 609 atomic_inc(&ordered->refs);
610 spin_unlock(&root->ordered_extent_lock); 610 spin_unlock(&root->ordered_extent_lock);
611 611
612 ordered->flush_work.func = btrfs_run_ordered_extent_work; 612 btrfs_init_work(&ordered->flush_work,
613 btrfs_run_ordered_extent_work, NULL, NULL);
613 list_add_tail(&ordered->work_list, &works); 614 list_add_tail(&ordered->work_list, &works);
614 btrfs_queue_worker(&root->fs_info->flush_workers, 615 btrfs_queue_work(root->fs_info->flush_workers,
615 &ordered->flush_work); 616 &ordered->flush_work);
616 617
617 cond_resched(); 618 cond_resched();
618 spin_lock(&root->ordered_extent_lock); 619 spin_lock(&root->ordered_extent_lock);
@@ -725,8 +726,8 @@ int btrfs_run_ordered_operations(struct btrfs_trans_handle *trans,
725 goto out; 726 goto out;
726 } 727 }
727 list_add_tail(&work->list, &works); 728 list_add_tail(&work->list, &works);
728 btrfs_queue_worker(&root->fs_info->flush_workers, 729 btrfs_queue_work(root->fs_info->flush_workers,
729 &work->work); 730 &work->work);
730 731
731 cond_resched(); 732 cond_resched();
732 spin_lock(&root->fs_info->ordered_root_lock); 733 spin_lock(&root->fs_info->ordered_root_lock);
diff --git a/fs/btrfs/ordered-data.h b/fs/btrfs/ordered-data.h
index 246897058efb..fe9f4dbab09c 100644
--- a/fs/btrfs/ordered-data.h
+++ b/fs/btrfs/ordered-data.h
@@ -133,7 +133,7 @@ struct btrfs_ordered_extent {
133 struct btrfs_work work; 133 struct btrfs_work work;
134 134
135 struct completion completion; 135 struct completion completion;
136 struct btrfs_work flush_work; 136 struct btrfs_work_struct flush_work;
137 struct list_head work_list; 137 struct list_head work_list;
138}; 138};
139 139