diff mbox series

[v5,3/8] scsi: pm8001: use sas_find_attached_phy_id() instead of open coded

Message ID 20220927123926.953297-4-yanaijie@huawei.com (mailing list archive)
State Superseded
Headers show
Series scsi: libsas: sas address comparison refactor | expand

Commit Message

Jason Yan Sept. 27, 2022, 12:39 p.m. UTC
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>
---
 drivers/scsi/pm8001/pm8001_sas.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

Comments

Damien Le Moal Sept. 27, 2022, 10:57 p.m. UTC | #1
On 9/27/22 21:39, 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>
> ---
>  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..042c0843de1a 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 == -ENODEV) {
>  			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;

Nit:

res = -ENODEV would be a lot clearer.
Or do:

		if (phy_id < 0) {
			...
			ret = phy_id;
		} ...

No ?

> +		} else {
> +			pm8001_device->attached_phy = phy_id;
>  		}
>  	} else {
>  		if (dev->dev_type == SAS_SATA_DEV) {
Jason Yan Sept. 28, 2022, 2:17 a.m. UTC | #2
On 2022/9/28 6:57, Damien Le Moal wrote:
> On 9/27/22 21:39, 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>
>> ---
>>   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..042c0843de1a 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 == -ENODEV) {
>>   			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;
> 
> Nit:
> 
> res = -ENODEV would be a lot clearer.
> Or do:
> 
> 		if (phy_id < 0) {
> 			...
> 			ret = phy_id;
> 		} ...
> 

This boils down to personal preferences. I'd like to change to the 
latter one if no objections.

Thanks,
Jason

> No ?
> 
>> +		} else {
>> +			pm8001_device->attached_phy = phy_id;
>>   		}
>>   	} else {
>>   		if (dev->dev_type == SAS_SATA_DEV) {
>
Damien Le Moal Sept. 28, 2022, 5:38 a.m. UTC | #3
On 9/28/22 11:17, Jason Yan wrote:
> 
> On 2022/9/28 6:57, Damien Le Moal wrote:
>> On 9/27/22 21:39, 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>
>>> ---
>>>   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..042c0843de1a 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 == -ENODEV) {
>>>   			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;
>>
>> Nit:
>>
>> res = -ENODEV would be a lot clearer.
>> Or do:
>>
>> 		if (phy_id < 0) {
>> 			...
>> 			ret = phy_id;
>> 		} ...
>>
> 
> This boils down to personal preferences. I'd like to change to the 
> latter one if no objections.

Either work for me. The point is to preferably have something consistent
with the return value from sas_find_attached_phy_id() and not playing
games with it. So yes, the second one is fine.

> 
> Thanks,
> Jason
> 
>> No ?
>>
>>> +		} else {
>>> +			pm8001_device->attached_phy = phy_id;
>>>   		}
>>>   	} else {
>>>   		if (dev->dev_type == SAS_SATA_DEV) {
>>
diff mbox series

Patch

diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
index 8e3f2f9ddaac..042c0843de1a 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 == -ENODEV) {
 			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) {