diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/blkdev.h | 3 | ||||
-rw-r--r-- | include/linux/iocontext.h | 12 |
2 files changed, 11 insertions, 4 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index d1b6f4ed1f96..65c2f8c70089 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -393,6 +393,9 @@ struct request_queue { | |||
393 | /* Throttle data */ | 393 | /* Throttle data */ |
394 | struct throtl_data *td; | 394 | struct throtl_data *td; |
395 | #endif | 395 | #endif |
396 | #ifdef CONFIG_LOCKDEP | ||
397 | int ioc_release_depth; | ||
398 | #endif | ||
396 | }; | 399 | }; |
397 | 400 | ||
398 | #define QUEUE_FLAG_QUEUED 1 /* uses generic tag queueing */ | 401 | #define QUEUE_FLAG_QUEUED 1 /* uses generic tag queueing */ |
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 | ||