^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef INT_BLK_MQ_DEBUGFS_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define INT_BLK_MQ_DEBUGFS_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #ifdef CONFIG_BLK_DEBUG_FS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <linux/seq_file.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) struct blk_mq_debugfs_attr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) const char *name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) umode_t mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) int (*show)(void *, struct seq_file *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) ssize_t (*write)(void *, const char __user *, size_t, loff_t *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) /* Set either .show or .seq_ops. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) const struct seq_operations *seq_ops;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) int __blk_mq_debugfs_rq_show(struct seq_file *m, struct request *rq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) int blk_mq_debugfs_rq_show(struct seq_file *m, void *v);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) void blk_mq_debugfs_register(struct request_queue *q);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) void blk_mq_debugfs_unregister(struct request_queue *q);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) void blk_mq_debugfs_register_hctx(struct request_queue *q,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) struct blk_mq_hw_ctx *hctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) void blk_mq_debugfs_unregister_hctx(struct blk_mq_hw_ctx *hctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) void blk_mq_debugfs_register_hctxs(struct request_queue *q);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) void blk_mq_debugfs_unregister_hctxs(struct request_queue *q);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) void blk_mq_debugfs_register_sched(struct request_queue *q);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) void blk_mq_debugfs_unregister_sched(struct request_queue *q);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) void blk_mq_debugfs_register_sched_hctx(struct request_queue *q,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) struct blk_mq_hw_ctx *hctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) void blk_mq_debugfs_unregister_sched_hctx(struct blk_mq_hw_ctx *hctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) void blk_mq_debugfs_register_rqos(struct rq_qos *rqos);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) void blk_mq_debugfs_unregister_rqos(struct rq_qos *rqos);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) void blk_mq_debugfs_unregister_queue_rqos(struct request_queue *q);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) static inline void blk_mq_debugfs_register(struct request_queue *q)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) static inline void blk_mq_debugfs_unregister(struct request_queue *q)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) static inline void blk_mq_debugfs_register_hctx(struct request_queue *q,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) struct blk_mq_hw_ctx *hctx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) static inline void blk_mq_debugfs_unregister_hctx(struct blk_mq_hw_ctx *hctx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) static inline void blk_mq_debugfs_register_hctxs(struct request_queue *q)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) static inline void blk_mq_debugfs_unregister_hctxs(struct request_queue *q)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) static inline void blk_mq_debugfs_register_sched(struct request_queue *q)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) static inline void blk_mq_debugfs_unregister_sched(struct request_queue *q)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) static inline void blk_mq_debugfs_register_sched_hctx(struct request_queue *q,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) struct blk_mq_hw_ctx *hctx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) static inline void blk_mq_debugfs_unregister_sched_hctx(struct blk_mq_hw_ctx *hctx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) static inline void blk_mq_debugfs_register_rqos(struct rq_qos *rqos)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) static inline void blk_mq_debugfs_unregister_rqos(struct rq_qos *rqos)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) static inline void blk_mq_debugfs_unregister_queue_rqos(struct request_queue *q)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) #ifdef CONFIG_BLK_DEBUG_FS_ZONED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) int queue_zone_wlock_show(void *data, struct seq_file *m);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) static inline int queue_zone_wlock_show(void *data, struct seq_file *m)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #endif