aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/blkdev.h3
-rw-r--r--include/linux/iocontext.h12
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
7struct cfq_queue; 8struct cfq_queue;
8struct cfq_ttime { 9struct 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
66static inline struct io_context *ioc_task_link(struct io_context *ioc) 69static 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
80struct task_struct; 83struct task_struct;
81#ifdef CONFIG_BLOCK 84#ifdef CONFIG_BLOCK
82void put_io_context(struct io_context *ioc); 85void put_io_context(struct io_context *ioc, struct request_queue *locked_q);
83void exit_io_context(struct task_struct *task); 86void exit_io_context(struct task_struct *task);
84struct io_context *get_task_io_context(struct task_struct *task, 87struct 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);
87void ioc_cgroup_changed(struct io_context *ioc); 90void ioc_cgroup_changed(struct io_context *ioc);
88#else 91#else
89struct io_context; 92struct io_context;
90static inline void put_io_context(struct io_context *ioc) { } 93static inline void put_io_context(struct io_context *ioc,
94 struct request_queue *locked_q) { }
91static inline void exit_io_context(struct task_struct *task) { } 95static inline void exit_io_context(struct task_struct *task) { }
92#endif 96#endif
93 97