diff options
author | Qu Wenruo <quwenruo@cn.fujitsu.com> | 2014-02-27 21:46:09 -0500 |
---|---|---|
committer | Josef Bacik <jbacik@fb.com> | 2014-03-10 15:17:07 -0400 |
commit | a44903abe9dc23ffa305898368a7a910dbae13c5 (patch) | |
tree | 926814c93112bf608fa3db44ed33e0eb4562bd7e | |
parent | a8c93d4ef6f6727764a61a2ee1c1878a755637c5 (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.h | 4 | ||||
-rw-r--r-- | fs/btrfs/disk-io.c | 10 | ||||
-rw-r--r-- | fs/btrfs/inode.c | 8 | ||||
-rw-r--r-- | fs/btrfs/ordered-data.c | 13 | ||||
-rw-r--r-- | fs/btrfs/ordered-data.h | 2 |
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 | ||
3687 | struct btrfs_delalloc_work *btrfs_alloc_delalloc_work(struct inode *inode, | 3687 | struct 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 | ||
8389 | static void btrfs_run_delalloc_work(struct btrfs_work *work) | 8389 | static 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 | ||
579 | static void btrfs_run_ordered_extent_work(struct btrfs_work *work) | 579 | static 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 | ||