hulk inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/ID0C1D -------------------------------- Adding RQ_QOS_INFLIGHT to enum rq_qos_id caused a KABI break. Therefore, enum rq_qos_id is deprecated and replaced by macro definitions. Also, KABI_REPLACE is used to change `enum rq_qos_id id` in struct rq_qos to `u32 id`. Signed-off-by: Baokun Li <libaokun1@huawei.com> --- block/blk-mq-debugfs.c | 2 +- block/blk-rq-qos.c | 2 +- block/blk-rq-qos.h | 16 +++++++++++----- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c index b5af47bf99d4..cb9aa9954890 100644 --- a/block/blk-mq-debugfs.c +++ b/block/blk-mq-debugfs.c @@ -789,7 +789,7 @@ void blk_mq_debugfs_unregister_sched(struct request_queue *q) q->sched_debugfs_dir = NULL; } -static const char *rq_qos_id_to_name(enum rq_qos_id id) +static const char *rq_qos_id_to_name(u32 id) { switch (id) { case RQ_QOS_WBT: diff --git a/block/blk-rq-qos.c b/block/blk-rq-qos.c index 6ea4bdf4f802..4f36e62d630e 100644 --- a/block/blk-rq-qos.c +++ b/block/blk-rq-qos.c @@ -304,7 +304,7 @@ void rq_qos_exit(struct request_queue *q) mutex_unlock(&q->rq_qos_mutex); } -int rq_qos_add(struct rq_qos *rqos, struct gendisk *disk, enum rq_qos_id id, +int rq_qos_add(struct rq_qos *rqos, struct gendisk *disk, u32 id, const struct rq_qos_ops *ops) { struct request_queue *q = disk->queue; diff --git a/block/blk-rq-qos.h b/block/blk-rq-qos.h index d504a302ca0f..79adea4745fc 100644 --- a/block/blk-rq-qos.h +++ b/block/blk-rq-qos.h @@ -13,12 +13,19 @@ struct blk_mq_debugfs_attr; +/* + * enum rq_qos_id has been deprecated because of KABI incompatibility. + * Use the macro definitions below instead. + */ enum rq_qos_id { RQ_QOS_WBT, RQ_QOS_LATENCY, RQ_QOS_COST, - RQ_QOS_INFLIGHT, }; +#define RQ_QOS_WBT 0 +#define RQ_QOS_LATENCY 1 +#define RQ_QOS_COST 2 +#define RQ_QOS_INFLIGHT 3 struct rq_wait { wait_queue_head_t wait; @@ -28,7 +35,7 @@ struct rq_wait { struct rq_qos { const struct rq_qos_ops *ops; struct gendisk *disk; - enum rq_qos_id id; + KABI_REPLACE(enum rq_qos_id id, u32 id) struct rq_qos *next; #ifdef CONFIG_BLK_DEBUG_FS struct dentry *debugfs_dir; @@ -59,8 +66,7 @@ struct rq_depth { unsigned int default_depth; }; -static inline struct rq_qos *rq_qos_id(struct request_queue *q, - enum rq_qos_id id) +static inline struct rq_qos *rq_qos_id(struct request_queue *q, u32 id) { struct rq_qos *rqos; for (rqos = q->rq_qos; rqos; rqos = rqos->next) { @@ -86,7 +92,7 @@ static inline void rq_wait_init(struct rq_wait *rq_wait) init_waitqueue_head(&rq_wait->wait); } -int rq_qos_add(struct rq_qos *rqos, struct gendisk *disk, enum rq_qos_id id, +int rq_qos_add(struct rq_qos *rqos, struct gendisk *disk, u32 id, const struct rq_qos_ops *ops); void rq_qos_del(struct rq_qos *rqos); -- 2.46.1