Re: [PATCH 1/2] blk-mq: add two interfaces to lock/unlock blk_mq_tags->lock

From: yukuai (C)
Date: Sun Aug 08 2021 - 21:11:45 EST


On 2021/08/09 0:44, Bart Van Assche wrote:
On 8/7/21 8:17 PM, Yu Kuai wrote:
+void blk_mq_tags_lock(struct blk_mq_tags *tags, unsigned long *flags)
+{
+ spin_lock_irqsave(&tags->lock, *flags);
+}
+EXPORT_SYMBOL(blk_mq_tags_lock);
+
+void blk_mq_tags_unlock(struct blk_mq_tags *tags, unsigned long *flags)
+{
+ spin_unlock_irqrestore(&tags->lock, *flags);
+}
+EXPORT_SYMBOL(blk_mq_tags_unlock);

The tag map lock is an implementation detail and hence this lock must
not be used directly by block drivers. I propose to introduce and export
a new function to block drivers that does the following:
* Lock tags->lock.
* Call blk_mq_tag_to_rq().
* Check whether the request is in the started state. If so, increment
its reference count.
* Unlock tags->lock.

Hi, Bart

Thanks for your advice, will do this in next iteration.

Best regards
Kuai