linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] scsi: libsas: Some minor improvements
@ 2022-02-25 10:57 John Garry
  2022-02-25 10:57 ` [PATCH v2 1/2] scsi: libsas: Make sas_notify_{phy,port}_event() return void John Garry
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: John Garry @ 2022-02-25 10:57 UTC (permalink / raw)
  To: jejb, martin.petersen
  Cc: chenxiang66, linux-scsi, linux-kernel, linuxarm, damien.lemoal,
	John Garry

Hi Martin,

This is just a couple of small improvements which we had sitting on our
dev branch. Please consider for 5.18.

Changes since v1:
- add RB tag (thanks)
- simplify C code in 2/2 

Thanks!

John Garry (2):
  scsi: libsas: Make sas_notify_{phy,port}_event() return void
  scsi: libsas: Use bool for queue_work() return code

 drivers/scsi/libsas/sas_event.c    | 50 ++++++++++++------------------
 drivers/scsi/libsas/sas_internal.h |  4 +--
 include/scsi/libsas.h              |  8 ++---
 3 files changed, 24 insertions(+), 38 deletions(-)

-- 
2.26.2


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/2] scsi: libsas: Make sas_notify_{phy,port}_event() return void
  2022-02-25 10:57 [PATCH v2 0/2] scsi: libsas: Some minor improvements John Garry
@ 2022-02-25 10:57 ` John Garry
  2022-02-25 10:57 ` [PATCH v2 2/2] scsi: libsas: Use bool for queue_work() return code John Garry
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: John Garry @ 2022-02-25 10:57 UTC (permalink / raw)
  To: jejb, martin.petersen
  Cc: chenxiang66, linux-scsi, linux-kernel, linuxarm, damien.lemoal,
	John Garry

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.

Also remove prototype for sas_notify_phy_event() in sas_internal.h, which
should not be there.

Signed-off-by: John Garry <john.garry@huawei.com>
Reviewed-by: Xiang Chen <chenxiang66@hisilicon.com>
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.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_ */
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/2] scsi: libsas: Use bool for queue_work() return code
  2022-02-25 10:57 [PATCH v2 0/2] scsi: libsas: Some minor improvements John Garry
  2022-02-25 10:57 ` [PATCH v2 1/2] scsi: libsas: Make sas_notify_{phy,port}_event() return void John Garry
@ 2022-02-25 10:57 ` John Garry
  2022-02-27  3:59   ` Damien Le Moal
  2022-02-28  2:48 ` [PATCH v2 0/2] scsi: libsas: Some minor improvements Martin K. Petersen
  2022-03-02  5:13 ` Martin K. Petersen
  3 siblings, 1 reply; 6+ messages in thread
From: John Garry @ 2022-02-25 10:57 UTC (permalink / raw)
  To: jejb, martin.petersen
  Cc: chenxiang66, linux-scsi, linux-kernel, linuxarm, damien.lemoal,
	John Garry

Function queue_work() returns a bool, so use a bool to hold this value
for the return code from callers, which should make the code a tiny bit
more clear.

Also take this opportunity to condense the code of the those callers, such
as sas_queue_work(), as suggested by Damien.

Signed-off-by: John Garry <john.garry@huawei.com>
---
 drivers/scsi/libsas/sas_event.c    | 30 +++++++++++-------------------
 drivers/scsi/libsas/sas_internal.h |  2 +-
 2 files changed, 12 insertions(+), 20 deletions(-)

diff --git a/drivers/scsi/libsas/sas_event.c b/drivers/scsi/libsas/sas_event.c
index 8ff58fd97837..f3a17191a4fe 100644
--- a/drivers/scsi/libsas/sas_event.c
+++ b/drivers/scsi/libsas/sas_event.c
@@ -10,29 +10,26 @@
 #include <scsi/scsi_host.h>
 #include "sas_internal.h"
 
-int sas_queue_work(struct sas_ha_struct *ha, struct sas_work *sw)
+bool sas_queue_work(struct sas_ha_struct *ha, struct sas_work *sw)
 {
-	/* it's added to the defer_q when draining so return succeed */
-	int rc = 1;
-
 	if (!test_bit(SAS_HA_REGISTERED, &ha->state))
-		return 0;
+		return false;
 
 	if (test_bit(SAS_HA_DRAINING, &ha->state)) {
 		/* add it to the defer list, if not already pending */
 		if (list_empty(&sw->drain_node))
 			list_add_tail(&sw->drain_node, &ha->defer_q);
-	} else
-		rc = queue_work(ha->event_q, &sw->work);
+		return true;
+	}
 
-	return rc;
+	return queue_work(ha->event_q, &sw->work);
 }
 
-static int sas_queue_event(int event, struct sas_work *work,
+static bool sas_queue_event(int event, struct sas_work *work,
 			    struct sas_ha_struct *ha)
 {
 	unsigned long flags;
-	int rc;
+	bool rc;
 
 	spin_lock_irqsave(&ha->lock, flags);
 	rc = sas_queue_work(ha, work);
@@ -44,13 +41,12 @@ static int sas_queue_event(int event, struct sas_work *work,
 void sas_queue_deferred_work(struct sas_ha_struct *ha)
 {
 	struct sas_work *sw, *_sw;
-	int ret;
 
 	spin_lock_irq(&ha->lock);
 	list_for_each_entry_safe(sw, _sw, &ha->defer_q, drain_node) {
 		list_del_init(&sw->drain_node);
-		ret = sas_queue_work(ha, sw);
-		if (ret != 1) {
+
+		if (!sas_queue_work(ha, sw)) {
 			pm_runtime_put(ha->dev);
 			sas_free_event(to_asd_sas_event(&sw->work));
 		}
@@ -170,7 +166,6 @@ void sas_notify_port_event(struct asd_sas_phy *phy, enum port_event event,
 {
 	struct sas_ha_struct *ha = phy->ha;
 	struct asd_sas_event *ev;
-	int ret;
 
 	BUG_ON(event >= PORT_NUM_EVENTS);
 
@@ -186,8 +181,7 @@ void sas_notify_port_event(struct asd_sas_phy *phy, enum port_event event,
 	if (sas_defer_event(phy, ev))
 		return;
 
-	ret = sas_queue_event(event, &ev->work, ha);
-	if (ret != 1) {
+	if (!sas_queue_event(event, &ev->work, ha)) {
 		pm_runtime_put(ha->dev);
 		sas_free_event(ev);
 	}
@@ -199,7 +193,6 @@ void sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
 {
 	struct sas_ha_struct *ha = phy->ha;
 	struct asd_sas_event *ev;
-	int ret;
 
 	BUG_ON(event >= PHY_NUM_EVENTS);
 
@@ -215,8 +208,7 @@ void sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
 	if (sas_defer_event(phy, ev))
 		return;
 
-	ret = sas_queue_event(event, &ev->work, ha);
-	if (ret != 1) {
+	if (!sas_queue_event(event, &ev->work, ha)) {
 		pm_runtime_put(ha->dev);
 		sas_free_event(ev);
 	}
diff --git a/drivers/scsi/libsas/sas_internal.h b/drivers/scsi/libsas/sas_internal.h
index 24843db2cb65..13d0ffaada93 100644
--- a/drivers/scsi/libsas/sas_internal.h
+++ b/drivers/scsi/libsas/sas_internal.h
@@ -67,7 +67,7 @@ void sas_porte_broadcast_rcvd(struct work_struct *work);
 void sas_porte_link_reset_err(struct work_struct *work);
 void sas_porte_timer_event(struct work_struct *work);
 void sas_porte_hard_reset(struct work_struct *work);
-int sas_queue_work(struct sas_ha_struct *ha, struct sas_work *sw);
+bool sas_queue_work(struct sas_ha_struct *ha, struct sas_work *sw);
 
 int sas_notify_lldd_dev_found(struct domain_device *);
 void sas_notify_lldd_dev_gone(struct domain_device *);
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/2] scsi: libsas: Use bool for queue_work() return code
  2022-02-25 10:57 ` [PATCH v2 2/2] scsi: libsas: Use bool for queue_work() return code John Garry
@ 2022-02-27  3:59   ` Damien Le Moal
  0 siblings, 0 replies; 6+ messages in thread
From: Damien Le Moal @ 2022-02-27  3:59 UTC (permalink / raw)
  To: John Garry, jejb, martin.petersen
  Cc: chenxiang66, linux-scsi, linux-kernel, linuxarm

On 2022/02/25 19:57, John Garry wrote:
> Function queue_work() returns a bool, so use a bool to hold this value
> for the return code from callers, which should make the code a tiny bit
> more clear.
> 
> Also take this opportunity to condense the code of the those callers, such
> as sas_queue_work(), as suggested by Damien.
> 
> Signed-off-by: John Garry <john.garry@huawei.com>

Looks good to me.

Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>

> ---
>  drivers/scsi/libsas/sas_event.c    | 30 +++++++++++-------------------
>  drivers/scsi/libsas/sas_internal.h |  2 +-
>  2 files changed, 12 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/scsi/libsas/sas_event.c b/drivers/scsi/libsas/sas_event.c
> index 8ff58fd97837..f3a17191a4fe 100644
> --- a/drivers/scsi/libsas/sas_event.c
> +++ b/drivers/scsi/libsas/sas_event.c
> @@ -10,29 +10,26 @@
>  #include <scsi/scsi_host.h>
>  #include "sas_internal.h"
>  
> -int sas_queue_work(struct sas_ha_struct *ha, struct sas_work *sw)
> +bool sas_queue_work(struct sas_ha_struct *ha, struct sas_work *sw)
>  {
> -	/* it's added to the defer_q when draining so return succeed */
> -	int rc = 1;
> -
>  	if (!test_bit(SAS_HA_REGISTERED, &ha->state))
> -		return 0;
> +		return false;
>  
>  	if (test_bit(SAS_HA_DRAINING, &ha->state)) {
>  		/* add it to the defer list, if not already pending */
>  		if (list_empty(&sw->drain_node))
>  			list_add_tail(&sw->drain_node, &ha->defer_q);
> -	} else
> -		rc = queue_work(ha->event_q, &sw->work);
> +		return true;
> +	}
>  
> -	return rc;
> +	return queue_work(ha->event_q, &sw->work);
>  }
>  
> -static int sas_queue_event(int event, struct sas_work *work,
> +static bool sas_queue_event(int event, struct sas_work *work,
>  			    struct sas_ha_struct *ha)
>  {
>  	unsigned long flags;
> -	int rc;
> +	bool rc;
>  
>  	spin_lock_irqsave(&ha->lock, flags);
>  	rc = sas_queue_work(ha, work);
> @@ -44,13 +41,12 @@ static int sas_queue_event(int event, struct sas_work *work,
>  void sas_queue_deferred_work(struct sas_ha_struct *ha)
>  {
>  	struct sas_work *sw, *_sw;
> -	int ret;
>  
>  	spin_lock_irq(&ha->lock);
>  	list_for_each_entry_safe(sw, _sw, &ha->defer_q, drain_node) {
>  		list_del_init(&sw->drain_node);
> -		ret = sas_queue_work(ha, sw);
> -		if (ret != 1) {
> +
> +		if (!sas_queue_work(ha, sw)) {
>  			pm_runtime_put(ha->dev);
>  			sas_free_event(to_asd_sas_event(&sw->work));
>  		}
> @@ -170,7 +166,6 @@ void sas_notify_port_event(struct asd_sas_phy *phy, enum port_event event,
>  {
>  	struct sas_ha_struct *ha = phy->ha;
>  	struct asd_sas_event *ev;
> -	int ret;
>  
>  	BUG_ON(event >= PORT_NUM_EVENTS);
>  
> @@ -186,8 +181,7 @@ void sas_notify_port_event(struct asd_sas_phy *phy, enum port_event event,
>  	if (sas_defer_event(phy, ev))
>  		return;
>  
> -	ret = sas_queue_event(event, &ev->work, ha);
> -	if (ret != 1) {
> +	if (!sas_queue_event(event, &ev->work, ha)) {
>  		pm_runtime_put(ha->dev);
>  		sas_free_event(ev);
>  	}
> @@ -199,7 +193,6 @@ void sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
>  {
>  	struct sas_ha_struct *ha = phy->ha;
>  	struct asd_sas_event *ev;
> -	int ret;
>  
>  	BUG_ON(event >= PHY_NUM_EVENTS);
>  
> @@ -215,8 +208,7 @@ void sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
>  	if (sas_defer_event(phy, ev))
>  		return;
>  
> -	ret = sas_queue_event(event, &ev->work, ha);
> -	if (ret != 1) {
> +	if (!sas_queue_event(event, &ev->work, ha)) {
>  		pm_runtime_put(ha->dev);
>  		sas_free_event(ev);
>  	}
> diff --git a/drivers/scsi/libsas/sas_internal.h b/drivers/scsi/libsas/sas_internal.h
> index 24843db2cb65..13d0ffaada93 100644
> --- a/drivers/scsi/libsas/sas_internal.h
> +++ b/drivers/scsi/libsas/sas_internal.h
> @@ -67,7 +67,7 @@ void sas_porte_broadcast_rcvd(struct work_struct *work);
>  void sas_porte_link_reset_err(struct work_struct *work);
>  void sas_porte_timer_event(struct work_struct *work);
>  void sas_porte_hard_reset(struct work_struct *work);
> -int sas_queue_work(struct sas_ha_struct *ha, struct sas_work *sw);
> +bool sas_queue_work(struct sas_ha_struct *ha, struct sas_work *sw);
>  
>  int sas_notify_lldd_dev_found(struct domain_device *);
>  void sas_notify_lldd_dev_gone(struct domain_device *);


-- 
Damien Le Moal
Western Digital Research

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 0/2] scsi: libsas: Some minor improvements
  2022-02-25 10:57 [PATCH v2 0/2] scsi: libsas: Some minor improvements John Garry
  2022-02-25 10:57 ` [PATCH v2 1/2] scsi: libsas: Make sas_notify_{phy,port}_event() return void John Garry
  2022-02-25 10:57 ` [PATCH v2 2/2] scsi: libsas: Use bool for queue_work() return code John Garry
@ 2022-02-28  2:48 ` Martin K. Petersen
  2022-03-02  5:13 ` Martin K. Petersen
  3 siblings, 0 replies; 6+ messages in thread
From: Martin K. Petersen @ 2022-02-28  2:48 UTC (permalink / raw)
  To: John Garry
  Cc: jejb, martin.petersen, chenxiang66, linux-scsi, linux-kernel,
	linuxarm, damien.lemoal


John,

> This is just a couple of small improvements which we had sitting on
> our dev branch. Please consider for 5.18.

Applied to 5.18/scsi-staging, thanks!

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 0/2] scsi: libsas: Some minor improvements
  2022-02-25 10:57 [PATCH v2 0/2] scsi: libsas: Some minor improvements John Garry
                   ` (2 preceding siblings ...)
  2022-02-28  2:48 ` [PATCH v2 0/2] scsi: libsas: Some minor improvements Martin K. Petersen
@ 2022-03-02  5:13 ` Martin K. Petersen
  3 siblings, 0 replies; 6+ messages in thread
From: Martin K. Petersen @ 2022-03-02  5:13 UTC (permalink / raw)
  To: John Garry, jejb
  Cc: Martin K . Petersen, linux-kernel, linux-scsi, damien.lemoal,
	linuxarm, chenxiang66

On Fri, 25 Feb 2022 18:57:34 +0800, John Garry wrote:

> This is just a couple of small improvements which we had sitting on our
> dev branch. Please consider for 5.18.
> 
> Changes since v1:
> - add RB tag (thanks)
> - simplify C code in 2/2
> 
> [...]

Applied to 5.18/scsi-queue, thanks!

[1/2] scsi: libsas: Make sas_notify_{phy,port}_event() return void
      https://git.kernel.org/mkp/scsi/c/f1834fd1635b
[2/2] scsi: libsas: Use bool for queue_work() return code
      https://git.kernel.org/mkp/scsi/c/a2a59faa359a

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-03-02  5:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-25 10:57 [PATCH v2 0/2] scsi: libsas: Some minor improvements John Garry
2022-02-25 10:57 ` [PATCH v2 1/2] scsi: libsas: Make sas_notify_{phy,port}_event() return void John Garry
2022-02-25 10:57 ` [PATCH v2 2/2] scsi: libsas: Use bool for queue_work() return code John Garry
2022-02-27  3:59   ` Damien Le Moal
2022-02-28  2:48 ` [PATCH v2 0/2] scsi: libsas: Some minor improvements Martin K. Petersen
2022-03-02  5:13 ` Martin K. Petersen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).