[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3d386998-d810-5036-a87e-50aba9f56639@huawei.com>
Date: Wed, 12 Jan 2022 12:51:13 +0000
From: John Garry <john.garry@...wei.com>
To: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
QiuLaibin <qiulaibin@...wei.com>
CC: <axboe@...nel.dk>, <ming.lei@...hat.com>,
<martin.petersen@...cle.com>, <hare@...e.de>,
<johannes.thumshirn@....com>, <bvanassche@....org>,
<linux-block@...r.kernel.org>, <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH -next v4] blk-mq: fix tag_get wait task can't be awakened
On 12/01/2022 12:30, Andy Shevchenko 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?
>
I think that the idea is that test_bit() is fast and test_and_set_bit()
is slow; as such, if we generally expect the bit to be set, then there
is no need to do the slower test_and_set_bit() always.
Powered by blists - more mailing lists