[PATCH v5 01/12] nvme-fc: do not wait in vain when unloading module

Hannes Reinecke hare at suse.de
Thu Feb 1 04:41:35 PST 2024


On 1/31/24 09:51, Daniel Wagner wrote:
> The module exit path has race between deleting all controllers and
> freeing 'left over IDs'. To prevent double free a synchronization
> between nvme_delete_ctrl and ida_destroy has been added by the initial
> commit.
> 
> There is some logic around trying to prevent from hanging forever in
> wait_for_completion, though it does not handling all cases. E.g.
> blktests is able to reproduce the situation where the module unload
> hangs forever.
> 
> If we completely rely on the cleanup code executed from the
> nvme_delete_ctrl path, all IDs will be freed eventually. This makes
> calling ida_destroy unnecessary. We only have to ensure that all
> nvme_delete_ctrl code has been executed before we leave
> nvme_fc_exit_module. This is done by flushing the nvme_delete_wq
> workqueue.
> 
> While at it, remove the unused nvme_fc_wq workqueue too.
> 
> Reviewed-by: Christoph Hellwig <hch at lst.de>
> Signed-off-by: Daniel Wagner <dwagner at suse.de>
> ---
>   drivers/nvme/host/fc.c | 47 ++++++------------------------------------
>   1 file changed, 6 insertions(+), 41 deletions(-)
> 
Reviewed-by: Hannes Reinecke <hare at suse.de>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke                Kernel Storage Architect
hare at suse.de                              +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), GF: Ivo Totev, Andrew McDonald,
Werner Knoblich




More information about the Linux-nvme mailing list