aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/blkdev.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/blkdev.h')
-rw-r--r--include/linux/blkdev.h18
1 files changed, 12 insertions, 6 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 36ab42c9bb99..6d7e9afd08c3 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -99,13 +99,18 @@ struct request {
99 /* 99 /*
100 * The rb_node is only used inside the io scheduler, requests 100 * The rb_node is only used inside the io scheduler, requests
101 * are pruned when moved to the dispatch queue. So let the 101 * are pruned when moved to the dispatch queue. So let the
102 * completion_data share space with the rb_node. 102 * flush fields share space with the rb_node.
103 */ 103 */
104 union { 104 union {
105 struct rb_node rb_node; /* sort/lookup */ 105 struct rb_node rb_node; /* sort/lookup */
106 void *completion_data; 106 struct {
107 unsigned int seq;
108 struct list_head list;
109 } flush;
107 }; 110 };
108 111
112 void *completion_data;
113
109 /* 114 /*
110 * Three pointers are available for the IO schedulers, if they need 115 * Three pointers are available for the IO schedulers, if they need
111 * more they have to dynamically allocate it. 116 * more they have to dynamically allocate it.
@@ -362,11 +367,12 @@ struct request_queue
362 * for flush operations 367 * for flush operations
363 */ 368 */
364 unsigned int flush_flags; 369 unsigned int flush_flags;
365 unsigned int flush_seq; 370 unsigned int flush_pending_idx:1;
366 int flush_err; 371 unsigned int flush_running_idx:1;
372 unsigned long flush_pending_since;
373 struct list_head flush_queue[2];
374 struct list_head flush_data_in_flight;
367 struct request flush_rq; 375 struct request flush_rq;
368 struct request *orig_flush_rq;
369 struct list_head pending_flushes;
370 376
371 struct mutex sysfs_lock; 377 struct mutex sysfs_lock;
372 378