On 14/07/2022 19:49, Bart Van Assche wrote:
Semantics of the API? Shouldn't this rather be called an undocumented
aspect of blk_mq_free_tag_set()?
My concern is that the "set->tags = NULL" statement might be removed
in the future from blk_mq_free_tag_set() and also that it is possible
that scsi_mq_destroy_tags() is not updated after that change.
Sure, so how it is possible that set->tags == NULL ever when calling
scsi_mq_setup_tags()? I'm just wondering why you even care.
How about applying the patch below on top of patch 4/4?
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 295c48fdb650..2aca0a838ca5 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1990,10 +1990,7 @@ int scsi_mq_setup_tags(struct Scsi_Host *shost)
void scsi_mq_destroy_tags(struct Scsi_Host *shost)
{
- if (!shost->tag_set.tags)
- return;
blk_mq_free_tag_set(&shost->tag_set);
- WARN_ON_ONCE(shost->tag_set.tags);
}
That looks better.
Thanks,
John