diff options
Diffstat (limited to 'include/linux/iocontext.h')
-rw-r--r-- | include/linux/iocontext.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index 2c2b6da96b3c..01e863128780 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h | |||
@@ -3,6 +3,7 @@ | |||
3 | 3 | ||
4 | #include <linux/radix-tree.h> | 4 | #include <linux/radix-tree.h> |
5 | #include <linux/rcupdate.h> | 5 | #include <linux/rcupdate.h> |
6 | #include <linux/workqueue.h> | ||
6 | 7 | ||
7 | struct cfq_queue; | 8 | struct cfq_queue; |
8 | struct cfq_ttime { | 9 | struct cfq_ttime { |
@@ -33,8 +34,8 @@ struct cfq_io_context { | |||
33 | 34 | ||
34 | unsigned long changed; | 35 | unsigned long changed; |
35 | 36 | ||
36 | void (*dtor)(struct io_context *); /* destructor */ | 37 | void (*exit)(struct cfq_io_context *); |
37 | void (*exit)(struct io_context *); /* called on task exit */ | 38 | void (*release)(struct cfq_io_context *); |
38 | 39 | ||
39 | struct rcu_head rcu_head; | 40 | struct rcu_head rcu_head; |
40 | }; | 41 | }; |
@@ -61,6 +62,8 @@ struct io_context { | |||
61 | struct radix_tree_root radix_root; | 62 | struct radix_tree_root radix_root; |
62 | struct hlist_head cic_list; | 63 | struct hlist_head cic_list; |
63 | void __rcu *ioc_data; | 64 | void __rcu *ioc_data; |
65 | |||
66 | struct work_struct release_work; | ||
64 | }; | 67 | }; |
65 | 68 | ||
66 | static inline struct io_context *ioc_task_link(struct io_context *ioc) | 69 | static inline struct io_context *ioc_task_link(struct io_context *ioc) |
@@ -79,7 +82,7 @@ static inline struct io_context *ioc_task_link(struct io_context *ioc) | |||
79 | 82 | ||
80 | struct task_struct; | 83 | struct task_struct; |
81 | #ifdef CONFIG_BLOCK | 84 | #ifdef CONFIG_BLOCK |
82 | void put_io_context(struct io_context *ioc); | 85 | void put_io_context(struct io_context *ioc, struct request_queue *locked_q); |
83 | void exit_io_context(struct task_struct *task); | 86 | void exit_io_context(struct task_struct *task); |
84 | struct io_context *get_task_io_context(struct task_struct *task, | 87 | struct io_context *get_task_io_context(struct task_struct *task, |
85 | gfp_t gfp_flags, int node); | 88 | gfp_t gfp_flags, int node); |
@@ -87,7 +90,8 @@ void ioc_ioprio_changed(struct io_context *ioc, int ioprio); | |||
87 | void ioc_cgroup_changed(struct io_context *ioc); | 90 | void ioc_cgroup_changed(struct io_context *ioc); |
88 | #else | 91 | #else |
89 | struct io_context; | 92 | struct io_context; |
90 | static inline void put_io_context(struct io_context *ioc) { } | 93 | static inline void put_io_context(struct io_context *ioc, |
94 | struct request_queue *locked_q) { } | ||
91 | static inline void exit_io_context(struct task_struct *task) { } | 95 | static inline void exit_io_context(struct task_struct *task) { } |
92 | #endif | 96 | #endif |
93 | 97 | ||