mbox series

[v6,0/8] scsi: libsas: sas address comparison refactor

Message ID 20220928070130.3657183-1-yanaijie@huawei.com
Headers show
Series scsi: libsas: sas address comparison refactor | expand

Message

Jason Yan Sept. 28, 2022, 7:01 a.m. UTC
Sas address conversion and comparison is widely used in libsas and
drivers. However they are all opencoded and to avoid the line spill over
80 columns, are mostly split into multi-lines.

To make the code easier to read, introduce some helpers with clearer
semantics and replace the opencoded segments with them.

v5->v6:
  Return error coding style update suggested by Damien.

v4->v5:
  Rename sas_find_attached_phy() to sas_find_attached_phy_id().
  Return error code from sas_find_attached_phy_id() directly.
  Add review tags from John and Damien.

v3->v4:
  Fix comparison typo.
  Fix test condition error in sas_check_parent_topology() of patch #6.

v2->v3:
  Rename sas_phy_addr_same() to sas_phy_addr_match().
  Rearrange patches, move patch #6 to #1 and directly use the helper
  	sas_phy_match_dev_addr() in sas_find_attached_phy().
  Add some review tags from Jack Wang.

v1->v2:
  First factor out sas_find_attached_phy() and replace LLDDs's code
  	with it.
  Remove three too simple helpers.
  Rename the helpers with 'sas_' prefix.

Jason Yan (8):
  scsi: libsas: introduce sas address comparison helpers
  scsi: libsas: introduce sas_find_attached_phy_id() helper
  scsi: pm8001: use sas_find_attached_phy_id() instead of open coded
  scsi: mvsas: use sas_find_attached_phy_id() instead of open coded
  scsi: hisi_sas: use sas_find_attathed_phy_id() instead of open coded
  scsi: libsas: use sas_phy_match_dev_addr() instead of open coded
  scsi: libsas: use sas_phy_addr_match() instead of open coded
  scsi: libsas: use sas_phy_match_port_addr() instead of open coded

 drivers/scsi/hisi_sas/hisi_sas_main.c | 14 ++--------
 drivers/scsi/libsas/sas_expander.c    | 40 ++++++++++++++++-----------
 drivers/scsi/libsas/sas_internal.h    | 17 ++++++++++++
 drivers/scsi/mvsas/mv_sas.c           | 17 ++++--------
 drivers/scsi/pm8001/pm8001_sas.c      | 18 ++++--------
 include/scsi/libsas.h                 |  2 ++
 6 files changed, 57 insertions(+), 51 deletions(-)

Comments

Johannes Thumshirn Sept. 28, 2022, 7:25 a.m. UTC | #1
Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Johannes Thumshirn Sept. 28, 2022, 7:27 a.m. UTC | #2
Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Jason Yan Sept. 28, 2022, 7:29 a.m. UTC | #3
On 2022/9/28 15:02, Damien Le Moal wrote:
> On 9/28/22 16:01, Jason Yan wrote:
>> The attached phy id finding is open coded. Now we can replace it with
>> sas_find_attached_phy_id(). To keep consistent, the return value of
>> pm8001_dev_found_notify() is also changed to -ENODEV after calling
>> sas_find_attathed_phy_id() failed.
>>
>> Signed-off-by: Jason Yan <yanaijie@huawei.com>
>> Reviewed-by: Jack Wang <jinpu.wang@ionos.com>
>> Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
> 
> Looks good.
> 
> Note for future patches: if you change a patch, it needs to be reviewed
> again. So please drop any review tag from the patch commit message to make
> that clear.

OK. Thanks again.

Jason

> 
>> ---
>>   drivers/scsi/pm8001/pm8001_sas.c | 18 ++++++------------
>>   1 file changed, 6 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
>> index 8e3f2f9ddaac..b4007c4f157d 100644
>> --- a/drivers/scsi/pm8001/pm8001_sas.c
>> +++ b/drivers/scsi/pm8001/pm8001_sas.c
>> @@ -645,22 +645,16 @@ static int pm8001_dev_found_notify(struct domain_device *dev)
>>   	pm8001_device->dcompletion = &completion;
>>   	if (parent_dev && dev_is_expander(parent_dev->dev_type)) {
>>   		int phy_id;
>> -		struct ex_phy *phy;
>> -		for (phy_id = 0; phy_id < parent_dev->ex_dev.num_phys;
>> -		phy_id++) {
>> -			phy = &parent_dev->ex_dev.ex_phy[phy_id];
>> -			if (SAS_ADDR(phy->attached_sas_addr)
>> -				== SAS_ADDR(dev->sas_addr)) {
>> -				pm8001_device->attached_phy = phy_id;
>> -				break;
>> -			}
>> -		}
>> -		if (phy_id == parent_dev->ex_dev.num_phys) {
>> +
>> +		phy_id = sas_find_attached_phy_id(&parent_dev->ex_dev, dev);
>> +		if (phy_id < 0) {
>>   			pm8001_dbg(pm8001_ha, FAIL,
>>   				   "Error: no attached dev:%016llx at ex:%016llx.\n",
>>   				   SAS_ADDR(dev->sas_addr),
>>   				   SAS_ADDR(parent_dev->sas_addr));
>> -			res = -1;
>> +			res = phy_id;
>> +		} else {
>> +			pm8001_device->attached_phy = phy_id;
>>   		}
>>   	} else {
>>   		if (dev->dev_type == SAS_SATA_DEV) {
>
Johannes Thumshirn Sept. 28, 2022, 7:37 a.m. UTC | #4
Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Martin K. Petersen Oct. 18, 2022, 3:28 a.m. UTC | #5
Jason,

> Sas address conversion and comparison is widely used in libsas and
> drivers. However they are all opencoded and to avoid the line spill
> over 80 columns, are mostly split into multi-lines.

Applied to 6.2/scsi-staging, thanks!
Martin K. Petersen Oct. 22, 2022, 3:52 a.m. UTC | #6
On Wed, 28 Sep 2022 15:01:22 +0800, Jason Yan wrote:

> Sas address conversion and comparison is widely used in libsas and
> drivers. However they are all opencoded and to avoid the line spill over
> 80 columns, are mostly split into multi-lines.
> 
> To make the code easier to read, introduce some helpers with clearer
> semantics and replace the opencoded segments with them.
> 
> [...]

Applied to 6.2/scsi-queue, thanks!

[1/8] scsi: libsas: introduce sas address comparison helpers
      https://git.kernel.org/mkp/scsi/c/773792e4e704
[2/8] scsi: libsas: introduce sas_find_attached_phy_id() helper
      https://git.kernel.org/mkp/scsi/c/2d08f329a4f2
[3/8] scsi: pm8001: use sas_find_attached_phy_id() instead of open coded
      https://git.kernel.org/mkp/scsi/c/ec64858657a8
[4/8] scsi: mvsas: use sas_find_attached_phy_id() instead of open coded
      https://git.kernel.org/mkp/scsi/c/178c39d94ac2
[5/8] scsi: hisi_sas: use sas_find_attathed_phy_id() instead of open coded
      https://git.kernel.org/mkp/scsi/c/f0ed7bd5d913
[6/8] scsi: libsas: use sas_phy_match_dev_addr() instead of open coded
      https://git.kernel.org/mkp/scsi/c/ad74d1dadbe9
[7/8] scsi: libsas: use sas_phy_addr_match() instead of open coded
      https://git.kernel.org/mkp/scsi/c/bfa22905f386
[8/8] scsi: libsas: use sas_phy_match_port_addr() instead of open coded
      https://git.kernel.org/mkp/scsi/c/868a8824838f