Messages in this thread | | | Date | Sun, 17 Aug 2014 12:39:06 -0600 | From | Jens Axboe <> | Subject | Re: [PATCH v1 4/9] blk-mq: introduce init_flush_rq_fn callback in 'blk_mq_ops' |
| |
On 2014-08-16 01:49, Ming Lei wrote: > On 8/16/14, Jens Axboe <axboe@kernel.dk> wrote: >> On 08/14/2014 09:50 AM, Ming Lei wrote: >>> Currently pdu of the flush rq is simlpy copied from another rq, >>> it isn't enough to initialize pointer field well, so introduce >>> the callback for driver to handle the case easily. >> >> This is the only patch I don't really like. Can't we make do with >> calling ->init_request() for this instead of having to add another >> (weird) hook? > > I considered ->init_request() before, but looks there are some problems: > > - from API view, both 'hctx_idx' and 'request_idx' parameter don't make > sense for flush rq since it beongs to request queue instead of any one > of hctx > > - init_request()/exit_request() are weird too, since they will be called > for queuing every flush req, and they should have been called one > shot > > - it is called before queuing each flush req, and might introduce a bit cost > unnecessarily if init_request does lots of stuff > > - using init_request may break some current drivers(like scsi) > > Now I feel ->init_flush_rq() isn't good too, how about introducing > prepare_flush_rq() and unprepare_flush_rq()? And they can be > lightweight and have document benefit at least.
I think that's a better approach, lets do that.
-- Jens Axboe
| |