diff --git a/block/blk-core.c b/block/blk-core.c index 2d53e2ff48ff..a00bce9f46d8 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include @@ -441,8 +440,7 @@ int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags) * responsible for ensuring that that counter is * globally visible before the queue is unfrozen. */ - if ((pm && queue_rpm_status(q) != RPM_SUSPENDED) || - !blk_queue_pm_only(q)) { + if (pm || !blk_queue_pm_only(q)) { success = true; } else { percpu_ref_put(&q->q_usage_counter); @@ -467,7 +465,8 @@ int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags) wait_event(q->mq_freeze_wq, (!q->mq_freeze_depth && - blk_pm_resume_queue(pm, q)) || + (pm || (blk_pm_request_resume(q), + !blk_queue_pm_only(q)))) || blk_queue_dying(q)); if (blk_queue_dying(q)) return -ENODEV; diff --git a/block/blk-pm.h b/block/blk-pm.h index a2283cc9f716..ea5507d23e75 100644 --- a/block/blk-pm.h +++ b/block/blk-pm.h @@ -6,14 +6,11 @@ #include #ifdef CONFIG_PM -static inline int blk_pm_resume_queue(const bool pm, struct request_queue *q) +static inline void blk_pm_request_resume(struct request_queue *q) { - if (!q->dev || !blk_queue_pm_only(q)) - return 1; /* Nothing to do */ - if (pm && q->rpm_status != RPM_SUSPENDED) - return 1; /* Request allowed */ - pm_request_resume(q->dev); - return 0; + if (q->dev && (q->rpm_status == RPM_SUSPENDED || + q->rpm_status == RPM_SUSPENDING)) + pm_request_resume(q->dev); } static inline void blk_pm_mark_last_busy(struct request *rq) @@ -47,9 +44,8 @@ static inline void blk_pm_put_request(struct request *rq) --rq->q->nr_pending; } #else -static inline int blk_pm_resume_queue(const bool pm, struct request_queue *q) +static inline void blk_pm_request_resume(struct request_queue *q) { - return 1; } static inline void blk_pm_mark_last_busy(struct request *rq) diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index dcb7b342f0d3..433ae2605277 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -694,18 +694,6 @@ static inline bool queue_is_mq(struct request_queue *q) return q->mq_ops; } -#ifdef CONFIG_PM -static inline enum rpm_status queue_rpm_status(struct request_queue *q) -{ - return q->rpm_status; -} -#else -static inline enum rpm_status queue_rpm_status(struct request_queue *q) -{ - return RPM_ACTIVE; -} -#endif - static inline enum blk_zoned_model blk_queue_zoned_model(struct request_queue *q) {