From: Omar Sandoval <redacted>
This is useful for debugging problems where we've gotten stuck with
requests in the software queues.
Signed-off-by: Omar Sandoval <redacted>
---
block/blk-mq-debugfs.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c
index ee947f2f605b..4ee6ab28f56f 100644
--- a/block/blk-mq-debugfs.c
+++ b/block/blk-mq-debugfs.c
@@ -134,6 +134,20 @@ static const struct file_operations hctx_dispatch_fops = {
.release = seq_release,
};
+static int hctx_ctx_map_open(struct inode *inode, struct file *file)
+{
+ struct blk_mq_hw_ctx *hctx = inode->i_private;
+
+ return single_open(file, sbitmap_bitmap_show, &hctx->ctx_map);
+}
+
+static const struct file_operations hctx_ctx_map_fops = {
+ .open = hctx_ctx_map_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+};
+
static void *ctx_rq_list_start(struct seq_file *m, loff_t *pos)
{
struct blk_mq_ctx *ctx = m->private;@@ -179,6 +193,7 @@ static const struct blk_mq_debugfs_attr blk_mq_debugfs_hctx_attrs[] = {
{"state", 0400, &hctx_state_fops},
{"flags", 0400, &hctx_flags_fops},
{"dispatch", 0400, &hctx_dispatch_fops},
+ {"ctx_map", 0400, &hctx_ctx_map_fops},
};
static const struct blk_mq_debugfs_attr blk_mq_debugfs_ctx_attrs[] = {--
2.11.0