diff options
Diffstat (limited to 'include/linux/iocontext.h')
-rw-r--r-- | include/linux/iocontext.h | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index d15ca6591f96..ac390a34c0e7 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h | |||
@@ -14,14 +14,22 @@ struct io_cq { | |||
14 | struct request_queue *q; | 14 | struct request_queue *q; |
15 | struct io_context *ioc; | 15 | struct io_context *ioc; |
16 | 16 | ||
17 | struct list_head q_node; | 17 | /* |
18 | struct hlist_node ioc_node; | 18 | * q_node and ioc_node link io_cq through icq_list of q and ioc |
19 | * respectively. Both fields are unused once ioc_exit_icq() is | ||
20 | * called and shared with __rcu_icq_cache and __rcu_head which are | ||
21 | * used for RCU free of io_cq. | ||
22 | */ | ||
23 | union { | ||
24 | struct list_head q_node; | ||
25 | struct kmem_cache *__rcu_icq_cache; | ||
26 | }; | ||
27 | union { | ||
28 | struct hlist_node ioc_node; | ||
29 | struct rcu_head __rcu_head; | ||
30 | }; | ||
19 | 31 | ||
20 | unsigned long changed; | 32 | unsigned long changed; |
21 | struct rcu_head rcu_head; | ||
22 | |||
23 | void (*exit)(struct io_cq *); | ||
24 | void (*release)(struct io_cq *); | ||
25 | }; | 33 | }; |
26 | 34 | ||
27 | /* | 35 | /* |