From: Richard Weinberger <richard@nod.at>
To: Christoph Hellwig <hch@infradead.org>
Cc: dedekind1@gmail.com, tom.leiming@gmail.com,
linux-kernel@vger.kernel.org, axboe@fb.com,
linux-mtd@lists.infradead.org, computersforpeace@gmail.com,
dwmw2@infradead.org
Subject: Re: [PATCH 2/2] UBI: Block: Add blk-mq support
Date: Sat, 10 Jan 2015 22:52:02 +0100 [thread overview]
Message-ID: <54B19F02.2070506@nod.at> (raw)
In-Reply-To: <20150110185851.GA3945@infradead.org>
Am 10.01.2015 um 19:58 schrieb Christoph Hellwig:
>> +struct ubiblock_pdu {
>> + struct request *req;
>
> No need to store the request, you can trivially get at it using
> blk_mq_rq_from_pdu().
Very handy, I was not aware of blk_mq_rq_from_pdu().
>> + struct ubiblock *dev;
>
> Why do you need the dev pointer? You can always trivially get
> it using req->queuedata.
Same here.
>> +static void ubiblock_do_work(struct work_struct *work)
>> +{
>> + int ret;
>> + struct ubiblock_pdu *pdu = container_of(work, struct ubiblock_pdu, work);
>> +
>> + ret = ubiblock_read(pdu);
>> + blk_mq_end_request(pdu->req, ret ?: 0);
>
> Why not just pass ret as-is?
Obviously a brain fart. :-\
>> + if (blk_rq_pos(req) + blk_rq_cur_sectors(req) >
>> + get_capacity(req->rq_disk))
>> + return BLK_MQ_RQ_QUEUE_ERROR;
>
> The upper layers take are of this check.
Ok.
>> + pdu->usgl.list_pos = 0;
>> + pdu->usgl.page_pos = 0;
>
> Having a helper to initialize a ubi_sgl would be nicer than having
> to open code it ike here.
Ok.
>> +
>> + blk_mq_start_request(req);
>> + ret = blk_rq_map_sg(hctx->queue, req, pdu->usgl.sg);
>> +
>> + queue_work(dev->wq, &pdu->work);
>
> Why don't you move these calls into the work queue as well? The
> queue_rq call would literally just become a queue_work call.
I did not know that I'm allowed to get hctx->queue also via req->q.
> And given that this is a fairly common patter this should allow
> us to refactor / optimize this case a bit later on.
Will send a v2 in a jiffy!
Thanks,
//richard
WARNING: multiple messages have this Message-ID (diff)
From: Richard Weinberger <richard@nod.at>
To: Christoph Hellwig <hch@infradead.org>
Cc: dedekind1@gmail.com, dwmw2@infradead.org,
computersforpeace@gmail.com, linux-mtd@lists.infradead.org,
linux-kernel@vger.kernel.org, axboe@fb.com,
tom.leiming@gmail.com
Subject: Re: [PATCH 2/2] UBI: Block: Add blk-mq support
Date: Sat, 10 Jan 2015 22:52:02 +0100 [thread overview]
Message-ID: <54B19F02.2070506@nod.at> (raw)
In-Reply-To: <20150110185851.GA3945@infradead.org>
Am 10.01.2015 um 19:58 schrieb Christoph Hellwig:
>> +struct ubiblock_pdu {
>> + struct request *req;
>
> No need to store the request, you can trivially get at it using
> blk_mq_rq_from_pdu().
Very handy, I was not aware of blk_mq_rq_from_pdu().
>> + struct ubiblock *dev;
>
> Why do you need the dev pointer? You can always trivially get
> it using req->queuedata.
Same here.
>> +static void ubiblock_do_work(struct work_struct *work)
>> +{
>> + int ret;
>> + struct ubiblock_pdu *pdu = container_of(work, struct ubiblock_pdu, work);
>> +
>> + ret = ubiblock_read(pdu);
>> + blk_mq_end_request(pdu->req, ret ?: 0);
>
> Why not just pass ret as-is?
Obviously a brain fart. :-\
>> + if (blk_rq_pos(req) + blk_rq_cur_sectors(req) >
>> + get_capacity(req->rq_disk))
>> + return BLK_MQ_RQ_QUEUE_ERROR;
>
> The upper layers take are of this check.
Ok.
>> + pdu->usgl.list_pos = 0;
>> + pdu->usgl.page_pos = 0;
>
> Having a helper to initialize a ubi_sgl would be nicer than having
> to open code it ike here.
Ok.
>> +
>> + blk_mq_start_request(req);
>> + ret = blk_rq_map_sg(hctx->queue, req, pdu->usgl.sg);
>> +
>> + queue_work(dev->wq, &pdu->work);
>
> Why don't you move these calls into the work queue as well? The
> queue_rq call would literally just become a queue_work call.
I did not know that I'm allowed to get hctx->queue also via req->q.
> And given that this is a fairly common patter this should allow
> us to refactor / optimize this case a bit later on.
Will send a v2 in a jiffy!
Thanks,
//richard
next prev parent reply other threads:[~2015-01-10 21:52 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-10 14:29 [PATCH 1/2] UBI: Add initial support for scatter gather Richard Weinberger
2015-01-10 14:29 ` Richard Weinberger
2015-01-10 14:29 ` [PATCH 2/2] UBI: Block: Add blk-mq support Richard Weinberger
2015-01-10 14:29 ` Richard Weinberger
2015-01-10 18:58 ` Christoph Hellwig
2015-01-10 18:58 ` Christoph Hellwig
2015-01-10 21:52 ` Richard Weinberger [this message]
2015-01-10 21:52 ` Richard Weinberger
-- strict thread matches above, loose matches on Subject: below --
2014-11-24 16:04 UBI: Add support for scatter gather and blk-mq Richard Weinberger
2014-11-24 16:04 ` [PATCH 2/2] UBI: Block: Add blk-mq support Richard Weinberger
2014-11-24 16:04 ` Richard Weinberger
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=54B19F02.2070506@nod.at \
--to=richard@nod.at \
--cc=axboe@fb.com \
--cc=computersforpeace@gmail.com \
--cc=dedekind1@gmail.com \
--cc=dwmw2@infradead.org \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=tom.leiming@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.