[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <014a69ed-7a99-2a67-fa3a-947d11601114@opensource.wdc.com>
Date: Thu, 24 Feb 2022 21:43:43 +0900
From: Damien Le Moal <damien.lemoal@...nsource.wdc.com>
To: John Garry <john.garry@...wei.com>, jejb@...ux.ibm.com,
martin.petersen@...cle.com
Cc: chenxiang66@...ilicon.com, linux-scsi@...r.kernel.org,
linux-kernel@...r.kernel.org, linuxarm@...wei.com
Subject: Re: [PATCH 1/2] scsi: libsas: Make sas_notify_{phy,port}_event()
return void
On 2/24/22 20:04, John Garry wrote:
> Nobody checks the return codes, so make them return void. Indeed, if the
> LLDD cannot send an event, nothing much can be done in the LLDD about it.
It really sound like the LLDDs should be fixed to e.g. reset the adapter
if things go south with these functions. No sure though.
>
> Also remove prototype for sas_notify_phy_event() in sas_internal.h, which
> should not be there.
>
> Signed-off-by: John Garry <john.garry@...wei.com>
> Reviewed-by: Xiang Chen <chenxiang66@...ilicon.com>
In any case, these changes do not make anything worse :)
Reviewed-by: Damien Le Moal <damien.lemoal@...nsource.wdc.com>
> ---
> drivers/scsi/libsas/sas_event.c | 20 ++++++++------------
> drivers/scsi/libsas/sas_internal.h | 2 --
> include/scsi/libsas.h | 8 ++++----
> 3 files changed, 12 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/scsi/libsas/sas_event.c b/drivers/scsi/libsas/sas_event.c
> index 3613b9b315bc..8ff58fd97837 100644
> --- a/drivers/scsi/libsas/sas_event.c
> +++ b/drivers/scsi/libsas/sas_event.c
> @@ -165,8 +165,8 @@ static bool sas_defer_event(struct asd_sas_phy *phy, struct asd_sas_event *ev)
> return deferred;
> }
>
> -int sas_notify_port_event(struct asd_sas_phy *phy, enum port_event event,
> - gfp_t gfp_flags)
> +void sas_notify_port_event(struct asd_sas_phy *phy, enum port_event event,
> + gfp_t gfp_flags)
> {
> struct sas_ha_struct *ha = phy->ha;
> struct asd_sas_event *ev;
> @@ -176,7 +176,7 @@ int sas_notify_port_event(struct asd_sas_phy *phy, enum port_event event,
>
> ev = sas_alloc_event(phy, gfp_flags);
> if (!ev)
> - return -ENOMEM;
> + return;
>
> /* Call pm_runtime_put() with pairs in sas_port_event_worker() */
> pm_runtime_get_noresume(ha->dev);
> @@ -184,20 +184,18 @@ int sas_notify_port_event(struct asd_sas_phy *phy, enum port_event event,
> INIT_SAS_EVENT(ev, sas_port_event_worker, phy, event);
>
> if (sas_defer_event(phy, ev))
> - return 0;
> + return;
>
> ret = sas_queue_event(event, &ev->work, ha);
> if (ret != 1) {
> pm_runtime_put(ha->dev);
> sas_free_event(ev);
> }
> -
> - return ret;
> }
> EXPORT_SYMBOL_GPL(sas_notify_port_event);
>
> -int sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
> - gfp_t gfp_flags)
> +void sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
> + gfp_t gfp_flags)
> {
> struct sas_ha_struct *ha = phy->ha;
> struct asd_sas_event *ev;
> @@ -207,7 +205,7 @@ int sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
>
> ev = sas_alloc_event(phy, gfp_flags);
> if (!ev)
> - return -ENOMEM;
> + return;
>
> /* Call pm_runtime_put() with pairs in sas_phy_event_worker() */
> pm_runtime_get_noresume(ha->dev);
> @@ -215,14 +213,12 @@ int sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
> INIT_SAS_EVENT(ev, sas_phy_event_worker, phy, event);
>
> if (sas_defer_event(phy, ev))
> - return 0;
> + return;
>
> ret = sas_queue_event(event, &ev->work, ha);
> if (ret != 1) {
> pm_runtime_put(ha->dev);
> sas_free_event(ev);
> }
> -
> - return ret;
> }
> EXPORT_SYMBOL_GPL(sas_notify_phy_event);
> diff --git a/drivers/scsi/libsas/sas_internal.h b/drivers/scsi/libsas/sas_internal.h
> index b60f0bf612cf..24843db2cb65 100644
> --- a/drivers/scsi/libsas/sas_internal.h
> +++ b/drivers/scsi/libsas/sas_internal.h
> @@ -78,8 +78,6 @@ int sas_smp_phy_control(struct domain_device *dev, int phy_id,
> enum phy_func phy_func, struct sas_phy_linkrates *);
> int sas_smp_get_phy_events(struct sas_phy *phy);
>
> -int sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
> - gfp_t flags);
> void sas_device_set_phy(struct domain_device *dev, struct sas_port *port);
> struct domain_device *sas_find_dev_by_rphy(struct sas_rphy *rphy);
> struct domain_device *sas_ex_to_ata(struct domain_device *ex_dev, int phy_id);
> diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
> index dc529cc92d65..df2c8fc43429 100644
> --- a/include/scsi/libsas.h
> +++ b/include/scsi/libsas.h
> @@ -727,9 +727,9 @@ int sas_lu_reset(struct domain_device *dev, u8 *lun);
> int sas_query_task(struct sas_task *task, u16 tag);
> int sas_abort_task(struct sas_task *task, u16 tag);
>
> -int sas_notify_port_event(struct asd_sas_phy *phy, enum port_event event,
> - gfp_t gfp_flags);
> -int sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
> - gfp_t gfp_flags);
> +void sas_notify_port_event(struct asd_sas_phy *phy, enum port_event event,
> + gfp_t gfp_flags);
> +void sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
> + gfp_t gfp_flags);
>
> #endif /* _SASLIB_H_ */
--
Damien Le Moal
Western Digital Research
Powered by blists - more mailing lists