|
@@ -23,6 +23,7 @@ struct blk_flush_queue {
|
|
|
unsigned int flush_queue_delayed:1;
|
|
unsigned int flush_queue_delayed:1;
|
|
|
unsigned int flush_pending_idx:1;
|
|
unsigned int flush_pending_idx:1;
|
|
|
unsigned int flush_running_idx:1;
|
|
unsigned int flush_running_idx:1;
|
|
|
|
|
+ blk_status_t rq_status;
|
|
|
unsigned long flush_pending_since;
|
|
unsigned long flush_pending_since;
|
|
|
struct list_head flush_queue[2];
|
|
struct list_head flush_queue[2];
|
|
|
struct list_head flush_data_in_flight;
|
|
struct list_head flush_data_in_flight;
|
|
@@ -123,6 +124,12 @@ static inline void __blk_get_queue(struct request_queue *q)
|
|
|
kobject_get(&q->kobj);
|
|
kobject_get(&q->kobj);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+static inline bool
|
|
|
|
|
+is_flush_rq(struct request *req, struct blk_mq_hw_ctx *hctx)
|
|
|
|
|
+{
|
|
|
|
|
+ return hctx->fq->flush_rq == req;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
struct blk_flush_queue *blk_alloc_flush_queue(struct request_queue *q,
|
|
struct blk_flush_queue *blk_alloc_flush_queue(struct request_queue *q,
|
|
|
int node, int cmd_size, gfp_t flags);
|
|
int node, int cmd_size, gfp_t flags);
|
|
|
void blk_free_flush_queue(struct blk_flush_queue *q);
|
|
void blk_free_flush_queue(struct blk_flush_queue *q);
|