Loading block/blk-mq.c +20 −0 Original line number Diff line number Diff line Loading @@ -539,6 +539,26 @@ void blk_mq_kick_requeue_list(struct request_queue *q) } EXPORT_SYMBOL(blk_mq_kick_requeue_list); void blk_mq_abort_requeue_list(struct request_queue *q) { unsigned long flags; LIST_HEAD(rq_list); spin_lock_irqsave(&q->requeue_lock, flags); list_splice_init(&q->requeue_list, &rq_list); spin_unlock_irqrestore(&q->requeue_lock, flags); while (!list_empty(&rq_list)) { struct request *rq; rq = list_first_entry(&rq_list, struct request, queuelist); list_del_init(&rq->queuelist); rq->errors = -EIO; blk_mq_end_request(rq, rq->errors); } } EXPORT_SYMBOL(blk_mq_abort_requeue_list); static inline bool is_flush_request(struct request *rq, struct blk_flush_queue *fq, unsigned int tag) { Loading include/linux/blk-mq.h +1 −0 Original line number Diff line number Diff line Loading @@ -203,6 +203,7 @@ void blk_mq_requeue_request(struct request *rq); void blk_mq_add_to_requeue_list(struct request *rq, bool at_head); void blk_mq_cancel_requeue_work(struct request_queue *q); void blk_mq_kick_requeue_list(struct request_queue *q); void blk_mq_abort_requeue_list(struct request_queue *q); void blk_mq_complete_request(struct request *rq); void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx); Loading Loading
block/blk-mq.c +20 −0 Original line number Diff line number Diff line Loading @@ -539,6 +539,26 @@ void blk_mq_kick_requeue_list(struct request_queue *q) } EXPORT_SYMBOL(blk_mq_kick_requeue_list); void blk_mq_abort_requeue_list(struct request_queue *q) { unsigned long flags; LIST_HEAD(rq_list); spin_lock_irqsave(&q->requeue_lock, flags); list_splice_init(&q->requeue_list, &rq_list); spin_unlock_irqrestore(&q->requeue_lock, flags); while (!list_empty(&rq_list)) { struct request *rq; rq = list_first_entry(&rq_list, struct request, queuelist); list_del_init(&rq->queuelist); rq->errors = -EIO; blk_mq_end_request(rq, rq->errors); } } EXPORT_SYMBOL(blk_mq_abort_requeue_list); static inline bool is_flush_request(struct request *rq, struct blk_flush_queue *fq, unsigned int tag) { Loading
include/linux/blk-mq.h +1 −0 Original line number Diff line number Diff line Loading @@ -203,6 +203,7 @@ void blk_mq_requeue_request(struct request *rq); void blk_mq_add_to_requeue_list(struct request *rq, bool at_head); void blk_mq_cancel_requeue_work(struct request_queue *q); void blk_mq_kick_requeue_list(struct request_queue *q); void blk_mq_abort_requeue_list(struct request_queue *q); void blk_mq_complete_request(struct request *rq); void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx); Loading