On Wed, Jan 12, 2022 at 12:18:53PM +0800, QiuLaibin wrote: > On 2022/1/11 22:15, Andy Shevchenko wrote: > > On Tue, Jan 11, 2022 at 10:02:16PM +0800, Laibin Qiu wrote: ... > > > + if (test_bit(QUEUE_FLAG_HCTX_ACTIVE, &q->queue_flags) || > > > + test_and_set_bit(QUEUE_FLAG_HCTX_ACTIVE, &q->queue_flags)) { > > > > Whoever wrote this code did too much defensive programming, because the first > > conditional doesn't make much sense here. Am I right? > > > I think because this judgement is in the general IO process, there are also > some performance considerations here. I didn't buy this. Is there any better argument why you need redundant test_bit() call? > > > + return true; > > > } else { > > > > > + if (test_bit(BLK_MQ_S_TAG_ACTIVE, &hctx->state) || > > > + test_and_set_bit(BLK_MQ_S_TAG_ACTIVE, &hctx->state)) { > > > > Ditto. > > > > > + return true; > > > } ... > > > + unsigned int wake_batch = clamp_t(unsigned int, > > > + (sbq->sb.depth + users - 1) / users, 4U, SBQ_WAKE_BATCH); > > > > > > unsigned int wake_batch; > > > > wake_batch = clamp_val((sbq->sb.depth + users - 1) / users, 4, SBQ_WAKE_BATCH); > > ... > > > > is easier to read, no? > > Here I refer to the calculation method in sbq_calc_wake_batch(). And I will > separate the definition from the calculation in V5. I'm not sure I understand how it's related to the style changes I proposed. I haven't changed any logic behind. -- With Best Regards, Andy Shevchenko