diff options
author | Olof Johansson <olof@lixom.net> | 2014-09-24 14:20:48 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2014-09-24 14:21:01 -0400 |
commit | 28fd837204236cf5b5533525e5b53c5176fa97a3 (patch) | |
tree | ac7dcad925950bc0bb53c5a55cb199e31e7aaee0 /fs/btrfs/async-thread.c | |
parent | c82eb464879dd0ecbe0c4cb1b80ac4e82b634872 (diff) | |
parent | 64d14a31d5410ea34641c41795e0ba222bda740c (diff) |
Merge tag 'imx-cleanup-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into next/cleanup
Merge "ARM: imx: cleanup for 3.18" from Shawn Guo:
The i.MX cleanup for 3.18:
- Reomve a few i.MX27 and i.MX1 board files
- Remove imx_scu_standby_enable() since core code handles scu
standby now
- Remove unnecessary iomux declaration
- Remove useless sound card property from vf610-twr dts
* tag 'imx-cleanup-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
ARM: imx: Remove mach-mxt_td60 board file
ARM: i.MX: Remove i.MX1 ADS board support
ARM: dts: vf610-twr: remove useless property for sound card.
ARM: imx: remove imx_scu_standby_enable()
ARM: i.MX: Remove Phytec i.MX27 PCM038/PCM970 board files
ARM: i.MX: Remove mach-cpuimx27sd board file
ARM: imx: iomux: Do not export symbol without public declaration
Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'fs/btrfs/async-thread.c')
-rw-r--r-- | fs/btrfs/async-thread.c | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c index 5a201d81049c..fbd76ded9a34 100644 --- a/fs/btrfs/async-thread.c +++ b/fs/btrfs/async-thread.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/list.h> | 22 | #include <linux/list.h> |
23 | #include <linux/spinlock.h> | 23 | #include <linux/spinlock.h> |
24 | #include <linux/freezer.h> | 24 | #include <linux/freezer.h> |
25 | #include <linux/workqueue.h> | ||
26 | #include "async-thread.h" | 25 | #include "async-thread.h" |
27 | #include "ctree.h" | 26 | #include "ctree.h" |
28 | 27 | ||
@@ -55,8 +54,39 @@ struct btrfs_workqueue { | |||
55 | struct __btrfs_workqueue *high; | 54 | struct __btrfs_workqueue *high; |
56 | }; | 55 | }; |
57 | 56 | ||
58 | static inline struct __btrfs_workqueue | 57 | static void normal_work_helper(struct btrfs_work *work); |
59 | *__btrfs_alloc_workqueue(const char *name, int flags, int max_active, | 58 | |
59 | #define BTRFS_WORK_HELPER(name) \ | ||
60 | void btrfs_##name(struct work_struct *arg) \ | ||
61 | { \ | ||
62 | struct btrfs_work *work = container_of(arg, struct btrfs_work, \ | ||
63 | normal_work); \ | ||
64 | normal_work_helper(work); \ | ||
65 | } | ||
66 | |||
67 | BTRFS_WORK_HELPER(worker_helper); | ||
68 | BTRFS_WORK_HELPER(delalloc_helper); | ||
69 | BTRFS_WORK_HELPER(flush_delalloc_helper); | ||
70 | BTRFS_WORK_HELPER(cache_helper); | ||
71 | BTRFS_WORK_HELPER(submit_helper); | ||
72 | BTRFS_WORK_HELPER(fixup_helper); | ||
73 | BTRFS_WORK_HELPER(endio_helper); | ||
74 | BTRFS_WORK_HELPER(endio_meta_helper); | ||
75 | BTRFS_WORK_HELPER(endio_meta_write_helper); | ||
76 | BTRFS_WORK_HELPER(endio_raid56_helper); | ||
77 | BTRFS_WORK_HELPER(rmw_helper); | ||
78 | BTRFS_WORK_HELPER(endio_write_helper); | ||
79 | BTRFS_WORK_HELPER(freespace_write_helper); | ||
80 | BTRFS_WORK_HELPER(delayed_meta_helper); | ||
81 | BTRFS_WORK_HELPER(readahead_helper); | ||
82 | BTRFS_WORK_HELPER(qgroup_rescan_helper); | ||
83 | BTRFS_WORK_HELPER(extent_refs_helper); | ||
84 | BTRFS_WORK_HELPER(scrub_helper); | ||
85 | BTRFS_WORK_HELPER(scrubwrc_helper); | ||
86 | BTRFS_WORK_HELPER(scrubnc_helper); | ||
87 | |||
88 | static struct __btrfs_workqueue * | ||
89 | __btrfs_alloc_workqueue(const char *name, int flags, int max_active, | ||
60 | int thresh) | 90 | int thresh) |
61 | { | 91 | { |
62 | struct __btrfs_workqueue *ret = kzalloc(sizeof(*ret), GFP_NOFS); | 92 | struct __btrfs_workqueue *ret = kzalloc(sizeof(*ret), GFP_NOFS); |
@@ -232,13 +262,11 @@ static void run_ordered_work(struct __btrfs_workqueue *wq) | |||
232 | spin_unlock_irqrestore(lock, flags); | 262 | spin_unlock_irqrestore(lock, flags); |
233 | } | 263 | } |
234 | 264 | ||
235 | static void normal_work_helper(struct work_struct *arg) | 265 | static void normal_work_helper(struct btrfs_work *work) |
236 | { | 266 | { |
237 | struct btrfs_work *work; | ||
238 | struct __btrfs_workqueue *wq; | 267 | struct __btrfs_workqueue *wq; |
239 | int need_order = 0; | 268 | int need_order = 0; |
240 | 269 | ||
241 | work = container_of(arg, struct btrfs_work, normal_work); | ||
242 | /* | 270 | /* |
243 | * We should not touch things inside work in the following cases: | 271 | * We should not touch things inside work in the following cases: |
244 | * 1) after work->func() if it has no ordered_free | 272 | * 1) after work->func() if it has no ordered_free |
@@ -262,7 +290,7 @@ static void normal_work_helper(struct work_struct *arg) | |||
262 | trace_btrfs_all_work_done(work); | 290 | trace_btrfs_all_work_done(work); |
263 | } | 291 | } |
264 | 292 | ||
265 | void btrfs_init_work(struct btrfs_work *work, | 293 | void btrfs_init_work(struct btrfs_work *work, btrfs_work_func_t uniq_func, |
266 | btrfs_func_t func, | 294 | btrfs_func_t func, |
267 | btrfs_func_t ordered_func, | 295 | btrfs_func_t ordered_func, |
268 | btrfs_func_t ordered_free) | 296 | btrfs_func_t ordered_free) |
@@ -270,7 +298,7 @@ void btrfs_init_work(struct btrfs_work *work, | |||
270 | work->func = func; | 298 | work->func = func; |
271 | work->ordered_func = ordered_func; | 299 | work->ordered_func = ordered_func; |
272 | work->ordered_free = ordered_free; | 300 | work->ordered_free = ordered_free; |
273 | INIT_WORK(&work->normal_work, normal_work_helper); | 301 | INIT_WORK(&work->normal_work, uniq_func); |
274 | INIT_LIST_HEAD(&work->ordered_list); | 302 | INIT_LIST_HEAD(&work->ordered_list); |
275 | work->flags = 0; | 303 | work->flags = 0; |
276 | } | 304 | } |