Re: [PATCH 4/8] qla2xxx: Fix driver unload hang

Bart Van Assche
2019-11-07T16:54:25Z

On 11/5/19 7:06 AM, Himanshu Madhani wrote:
> From: Quinn Tran <qutran@marvell.com>
>
> This patch fixes driver unload hang by removing msleep()
>
> Fixes: d74595278f4ab ("scsi: qla2xxx: Add multiple queue pair functionality.")
> Cc: stable@vger.kernel.org
> Signed-off-by: Quinn Tran <qutran@marvell.com>
> Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
> ---
> drivers/scsi/qla2xxx/qla_init.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
> index bddb26baedd2..ff4528702b4e 100644
> --- a/drivers/scsi/qla2xxx/qla_init.c
> +++ b/drivers/scsi/qla2xxx/qla_init.c
> @@ -9009,8 +9009,6 @@ int qla2xxx_delete_qpair(struct scsi_qla_host *vha, struct qla_qpair *qpair)
> struct qla_hw_data *ha = qpair->hw;
>
> qpair->delete_in_progress = 1;
> - while (atomic_read(&qpair->ref_count))
> - msleep(500);
>
> ret = qla25xx_delete_req_que(vha, qpair->req);
> if (ret != QLA_SUCCESS)

I think that an explanation is needed why that loop had been introduced
and also why it is safe not to wait until qpair->ref_count drops to zero
in qla2xxx_delete_qpair().

Thanks,

Bart.