Messages in this thread | | | From | Bart Van Assche <> | Subject | Re: [PATCH 6/8] blk-mq: remove REQ_ATOM_COMPLETE usages from blk-mq | Date | Mon, 8 Jan 2018 23:36:20 +0000 |
| |
On Mon, 2018-01-08 at 11:15 -0800, Tejun Heo wrote: > After the recent updates to use generation number and state based > synchronization, blk-mq no longer depends on REQ_ATOM_COMPLETE except > to avoid firing the same timeout multiple times. > > Remove all REQ_ATOM_COMPLETE usages and use a new rq_flags flag > RQF_MQ_TIMEOUT_EXPIRED to avoid firing the same timeout multiple > times. This removes atomic bitops from hot paths too. > > v2: Removed blk_clear_rq_complete() from blk_mq_rq_timed_out(). > > v3: Added RQF_MQ_TIMEOUT_EXPIRED flag.
I think it's unfortunate that this patch spreads the request state over two struct request members, namely the lower two bits of gstate and the RQF_MQ_TIMEOUT_EXPIRED flag in req->rq_flags. Please consider to drop the RQF_MQ_TIMEOUT_EXPIRED flag and to represent the "timeout has been processed" state as a MQ_RQ_* state in gstate. That will avoid that every state update has to be reviewed whether or not perhaps an update of the RQF_MQ_TIMEOUT_EXPIRED flag is missing.
Thanks,
Bart. | |