From: Bart Van Assche <bvanassche@acm.org>
To: "axboe@kernel.dk" <axboe@kernel.dk>
Cc: "hch@lst.de" <hch@lst.de>,
"jthumshirn@suse.de" <jthumshirn@suse.de>,
"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
"martin.petersen@oracle.com" <martin.petersen@oracle.com>,
"hare@suse.com" <hare@suse.com>,
"ming.lei@redhat.com" <ming.lei@redhat.com>
Subject: Re: [PATCH] blk-mq-debugfs: Also show requests that have not yet been started
Date: Wed, 03 Oct 2018 14:42:17 -0700 [thread overview]
Message-ID: <1538602937.205649.29.camel@acm.org> (raw)
In-Reply-To: <1515795074.2396.75.camel@wdc.com>
On Fri, 2018-01-12 at 22:11 +0000, Bart Van Assche wrote:
> On Fri, 2018-01-12 at 15:05 -0700, Jens Axboe wrote:
> > On 1/12/18 3:00 PM, Bart Van Assche wrote:
> > > On Fri, 2018-01-12 at 14:55 -0700, Jens Axboe wrote:
> > > > On 1/12/18 2:52 PM, Bart Van Assche wrote:
> > > > > When debugging e.g. the SCSI timeout handler it is important that
> > > > > requests that have not yet been started or that already have
> > > > > completed are also reported through debugfs.
> > > > >
> > > > > This patch depends on a patch that went upstream recently, namely
> > > > > commit 14e3062fb185 ("scsi: core: Fix a scsi_show_rq() NULL pointer
> > > > > dereference").
> > > >
> > > > Why don't we just kill the check, and dump any request that has a
> > > > matching hctx? We already know the bit was set, so just print
> > > > all of them.
> > >
> > > It is very helpful during debugging that requests owned by a block driver and
> > > requests owned by the block layer core show up in different debugfs files.
> > > Removing the check completely would cause all requests to show up in the same
> > > debugfs file and would make interpreting the contents of these debugfs files
> > > much harder.
> >
> > Yeah, we'd have to make it just one file at that point. I'm not hugely
> > against the queuelist check, but probably warrants a comment as it's not
> > immediately clear (as opposed to the idle check, or the previous START
> > bit check).
>
> How about the below?
>
> diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c
> index 19db3f583bf1..da859dac442b 100644
> --- a/block/blk-mq-debugfs.c
> +++ b/block/blk-mq-debugfs.c
> @@ -394,6 +394,12 @@ struct show_busy_params {
> };
>
> /*
> + * Show "busy" requests - these are the requests owned by the block driver.
> + * The test list_empty(&rq->queuelist) is used to figure out whether or not
> + * a request is owned by the block driver. That test works because the block
> + * layer core uses list_del_init() consistently to remove a request from one
> + * of the request lists.
> + *
> * Note: the state of a request may change while this function is in progress,
> * e.g. due to a concurrent blk_mq_finish_request() call.
> */
> @@ -402,7 +408,7 @@ static void hctx_show_busy_rq(struct request *rq, void *data, bool reserved)
> const struct show_busy_params *params = data;
>
> if (blk_mq_map_queue(rq->q, rq->mq_ctx->cpu) == params->hctx &&
> - blk_mq_rq_state(rq) != MQ_RQ_IDLE)
> + list_empty(&rq->queuelist))
> __blk_mq_debugfs_rq_show(params->m,
> list_entry_rq(&rq->queuelist));
> }
Hello Jens,
Can you share your opinion about the above patch?
Thanks,
Bart.
next prev parent reply other threads:[~2018-10-03 21:42 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-12 21:52 [PATCH] blk-mq-debugfs: Also show requests that have not yet been started Bart Van Assche
2018-01-12 21:55 ` Jens Axboe
2018-01-12 22:00 ` Bart Van Assche
2018-01-12 22:05 ` Jens Axboe
2018-01-12 22:11 ` Bart Van Assche
2018-10-03 21:42 ` Bart Van Assche [this message]
2018-10-03 22:12 ` Jens Axboe
2018-10-03 22:51 ` Bart Van Assche
2018-10-03 23:52 ` Jens Axboe
-- strict thread matches above, loose matches on Subject: below --
2018-02-12 17:02 Bart Van Assche
2018-10-04 17:35 Bart Van Assche
2018-10-05 5:48 ` Hannes Reinecke
2018-10-05 7:06 ` Johannes Thumshirn
2018-10-05 14:18 ` Jens Axboe
2018-10-05 22:37 ` Omar Sandoval
2018-10-06 1:13 ` Jens Axboe
2018-10-08 9:15 ` Johannes Thumshirn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1538602937.205649.29.camel@acm.org \
--to=bvanassche@acm.org \
--cc=axboe@kernel.dk \
--cc=hare@suse.com \
--cc=hch@lst.de \
--cc=jthumshirn@suse.de \
--cc=linux-block@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=ming.lei@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).