[PATCH V3 7/8] nvmet-loop: do not alloc admin tag set during reset
Maurizio Lombardi
mlombard at arkamax.eu
Mon Apr 27 02:47:58 PDT 2026
On Mon Apr 27, 2026 at 11:46 AM CEST, Daniel Wagner wrote:
> On Fri, Apr 10, 2026 at 09:39:23AM +0200, Maurizio Lombardi wrote:
>> @@ -375,12 +376,15 @@ static int nvme_loop_configure_admin_queue(struct nvme_loop_ctrl *ctrl)
>> }
>> ctrl->ctrl.queue_count = 1;
>>
>> - error = nvme_alloc_admin_tag_set(&ctrl->ctrl, &ctrl->admin_tag_set,
>> - &nvme_loop_admin_mq_ops,
>> - sizeof(struct nvme_loop_iod) +
>> - NVME_INLINE_SG_CNT * sizeof(struct scatterlist));
>> - if (error)
>> - goto out_free_sq;
>> + if (new) {
>> + error = nvme_alloc_admin_tag_set(&ctrl->ctrl,
>> + &ctrl->admin_tag_set,
>> + &nvme_loop_admin_mq_ops,
>> + sizeof(struct nvme_loop_iod) +
>> + NVME_INLINE_SG_CNT * sizeof(struct scatterlist));
>> + if (error)
>> + goto out_free_sq;
>> + }
>>
>> /* reset stopped state for the fresh admin queue */
>> clear_bit(NVME_CTRL_ADMIN_Q_STOPPED, &ctrl->ctrl.flags);
>> @@ -415,7 +419,7 @@ static int nvme_loop_configure_admin_queue(struct nvme_loop_ctrl *ctrl)
>> return error;
>> }
>
> Personally, I am just not a big fan of conditional creation/removal of
> resources controlled via a bool. If it's the cleanest solution fine with
> me, but I wonder if here it wouldn't be cleaner to allocated the tagset
> outside of nvme_loop_configure_admin_queue and obviously the same idea
> for destroy.
>
> Have you tried this approach, does it look too ugly?
I have not tried, but I will look for an alternative approach before
submitting the next version and I will update you.
Thanks,
Maurizio
More information about the Linux-nvme
mailing list