Messages in this thread | | | Date | Thu, 9 Apr 2020 10:38:57 +0800 | From | Ming Lei <> | Subject | Re: [PATCH 2/5] block: add request->io_data_len |
| |
On Wed, Apr 08, 2020 at 10:11:19PM -0400, Tejun Heo wrote: > On Thu, Apr 09, 2020 at 09:44:06AM +0800, Ming Lei wrote: > > Almost all __blk_mq_end_request() follow blk_update_request(), so the > > completed bytes can be passed to __blk_mq_end_request(), then we can > > avoid to introduce this field. > > But on some drivers blk_update_request() may be called multiple times before > __blk_mq_end_request() is called and what's needed here is the total number of > bytes in the whole request, not just in the final completion.
OK.
Another choice might be to record request bytes in rq's payload when calling .queue_rq() only for these drivers.
> > > Also there is just 20 callers of __blk_mq_end_request(), looks this kind > > of change shouldn't be too big. > > This would work iff we get rid of partial completions and if we get rid of > partial completions, we might as well stop exposing blk_update_request() and > __blk_mq_end_request().
Indeed, we can store the completed bytes in request payload, so looks killing partial completion shouldn't be too hard.
Thanks, Ming
| |