Hello Jens, Please consider the ten patches in this series for kernel v4.12. These patches improve blk-mq debugfs support. Thanks, Bart. Changes compared to v5: - Updated patch 4/10 as proposed by Omar: fixed unregistration code and changed "goto out" at the end of __blk_mq_register_dev() into "return ret". - For patch 5/10, replaced the patch description by the patch description proposed by Omar and reduced the number of spin lock/unlock calls as requested by Jens. - Added Reviewed-by tags to the patches for which v5 got a review but v4 not. - For patch 10/10, added an example of what the generated output looks like to the description of this patch and increased the size of the output buffer from 64 to 80 characters. Changes compared to v4: - Modified patch 4 such that debugfs registration failures no longer cause block device registration to fail. - Modified patch 8 such that it no longer introduces new sparse warnings. - Modified patch 9 such that .show_rq() is only defined if CONFIG_BLK_DEBUG_FS is enabled. - Moved the definition of scsi_show_rq() to a new file in patch 10 and changed the implementation of scsi_show_rq() such that it now uses __scsi_format_command(). Changes compared to v3: - Changed the mutex_lock_interruptible() calls back to mutex_lock() calls. - Added a patch that renames the functions for registering and unregistering the "mq" directory in debugfs. - Moved the changes that add checking of the blk_mq_debugfs_register() return value into a separate patch. - Moved the unregistration of the "mq" directory into blk_cleanup_queue(). - Removed uninteresting information from scsi_show_rq(). - Added Reviewed-by tag to the patches that got a positive review. Changes compared to v2: - Changed the mutex_lock() calls in registration methods into mutex_lock_interruptible() since these functions can be called from the context of a user space process. - Avoid that the blk_mq_register_dev() changes in patch 1/8 cause a deadlock. Changes compared to v1: - Added two patches and replaced patch 1/6 such that debugfs attributes are now unregistered before freeing of a blk-mq queue starts instead of checking the "dead" queue flag. - Changed "rq->cmd_flags ^ op" into "rq->cmd_flags & ~REQ_OP_MASK" as proposed by Omar. - A seq_file pointer is now passed to the new queue_rq callback function instead of a fixed-size char buffer. Bart Van Assche (10): blk-mq: Register <dev>/queue/mq after having registered <dev>/queue blk-mq: Let blk_mq_debugfs_register() look up the queue name blk-mq-debugfs: Rename functions for registering and unregistering the mq directory blk-mq: Only unregister hctxs for which registration succeeded blk-mq: Unregister debugfs attributes earlier blk-mq: Move the "state" debugfs attribute one level down blk-mq: Make blk_flags_show() callers append a newline character blk-mq: Show operation, cmd_flags and rq_flags names blk-mq: Add blk_mq_ops.show_rq() scsi: Implement blk_mq_ops.show_rq() Bart Van Assche (10): blk-mq: Register <dev>/queue/mq after having registered <dev>/queue blk-mq: Let blk_mq_debugfs_register() look up the queue name blk-mq-debugfs: Rename functions for registering and unregistering the mq directory blk-mq: Only unregister hctxs for which registration succeeded blk-mq: Unregister debugfs attributes earlier blk-mq: Move the "state" debugfs attribute one level down blk-mq: Make blk_flags_show() callers append a newline character blk-mq: Show operation, cmd_flags and rq_flags names blk-mq: Add blk_mq_ops.show_rq() scsi: Implement blk_mq_ops.show_rq() block/blk-core.c | 8 +++- block/blk-mq-debugfs.c | 102 ++++++++++++++++++++++++++++++++++++-------- block/blk-mq-sysfs.c | 61 +++++++++++++++++++------- block/blk-mq.h | 14 +++--- block/blk-sysfs.c | 6 +-- drivers/scsi/Makefile | 1 + drivers/scsi/scsi_debugfs.c | 13 ++++++ drivers/scsi/scsi_debugfs.h | 4 ++ drivers/scsi/scsi_lib.c | 4 ++ include/linux/blk-mq.h | 8 ++++ 10 files changed, 175 insertions(+), 46 deletions(-) create mode 100644 drivers/scsi/scsi_debugfs.c create mode 100644 drivers/scsi/scsi_debugfs.h -- 2.12.2