On Fri, 2018-08-03 at 00:50 +-0800, Ming Lei wrote: +AD4- On Fri, Aug 3, 2018 at 12:40 AM, Bart Van Assche +ADw-Bart.VanAssche+AEA-wdc.com+AD4- wrote: +AD4- +AD4- On Fri, 2018-08-03 at 00:27 +-0800, Ming Lei wrote: +AD4- +AD4- +AD4- This issue can be fixed by reverting d250bf4e776ff09d5 (+ACI-blk-mq: only iterate over +AD4- +AD4- +AD4- inflight requests in blk+AF8-mq+AF8-tagset+AF8-busy+AF8-iter+ACI-). +AD4- +AD4- +AD4- +AD4- +AD4- +AD4- This patch looks wrong, because 'blk+AF8-mq+AF8-rq+AF8-state(rq) +AD0APQ- MQ+AF8-RQ+AF8-IN+AF8-FLIGHT' +AD4- +AD4- +AD4- isn't completely same with 'blk+AF8-mq+AF8-request+AF8-started(req)'. +AD4- +AD4- +AD4- +AD4- Please test the following change instead of reverting the commit mentioned +AD4- +AD4- above: +AD4- +AD4- +AD4- +AD4- diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c +AD4- +AD4- index 09b2ee6694fb..25a0583d8b4c 100644 +AD4- +AD4- --- a/block/blk-mq-tag.c +AD4- +AD4- +-+-+- b/block/blk-mq-tag.c +AD4- +AD4- +AEAAQA- -271,7 +-271,7 +AEAAQA- static bool bt+AF8-tags+AF8-iter(struct sbitmap +ACo-bitmap, unsigned int bitnr, void +ACo-data) +AD4- +AD4- +ACo- test and set the bit before assining -+AD4-rqs+AFsAXQ-. +AD4- +AD4- +ACo-/ +AD4- +AD4- rq +AD0- tags-+AD4-rqs+AFs-bitnr+AF0AOw- +AD4- +AD4- - if (rq +ACYAJg- blk+AF8-mq+AF8-rq+AF8-state(rq) +AD0APQ- MQ+AF8-RQ+AF8-IN+AF8-FLIGHT) +AD4- +AD4- +- if (rq +ACYAJg- blk+AF8-mq+AF8-rq+AF8-state(rq) +ACEAPQ- MQ+AF8-RQ+AF8-IDLE) +AD4- +AD4- iter+AF8-data-+AD4-fn(rq, iter+AF8-data-+AD4-data, reserved)+ADs- +AD4- +AD4- +AD4- +AD4- return true+ADs- +AD4- +AD4- +AD4- +AD4- I just sent out a similar patch on list, but use blk+AF8-mq+AF8-request+AF8-started() +AD4- instead. +AD4- +AD4- https://marc.info/?l+AD0-linux-scsi+ACY-m+AD0-153322823307754+ACY-w+AD0-2 Hello Ming, Since both patches are functionally equivalent, I'm fine with either version. Bart.