On Wed, 2017-05-31 at 14:43 -0700, Eduardo Valentin wrote:
> On Wed, May 31, 2017 at 02:30:49PM -0700, Bart Van Assche wrote:
> > +static void hctx_show_busy(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 &&
> > +       test_bit(REQ_ATOM_STARTED, &rq->atomic_flags))
> > +           __blk_mq_debugfs_rq_show(params->m,
> > +                                    list_entry_rq(&rq->queuelist));
> > +}
> > +
> > +static int hctx_busy_show(void *data, struct seq_file *m)
> > +{
> > +   struct blk_mq_hw_ctx *hctx = data;
> > +   struct show_busy_params params = { .m = m, .hctx = hctx };
> > +
> > +   blk_mq_tagset_busy_iter(hctx->queue->tag_set, hctx_show_busy, &params);
> > +
> > +   return 0;
> > +}
> 
> Why not making the two above one single function?
> hctx_busy_show vs. hctx_show_busy seams a bit confusing, and I could not see
> where they get reused in your patch set..

Hello Eduardo,

If I would open-code blk_mq_tagset_busy_iter() then I would be able to implement
the above two functions as a single function. However, blk_mq_tagset_busy_iter()
expects a function pointer as third argument. That's why the above functionality
has been split over two functions.

Bart.

Reply via email to