diff mbox

ses: Fix SAS device detection in enclosure

Message ID 1483997616-18900-1-git-send-email-emilne@redhat.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Ewan Milne Jan. 9, 2017, 9:33 p.m. UTC
From: "Ewan D. Milne" <emilne@redhat.com>

The call to scsi_is_sas_rphy() needs to be made on the
SAS end_device, not on the SCSI device.

Fixes: 835831c57e9b ("ses: use scsi_is_sas_rphy instead of is_sas_attached")
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Ewan D. Milne <emilne@redhat.com>
---
 drivers/scsi/ses.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Martin K. Petersen Jan. 16, 2017, 9:02 p.m. UTC | #1
>>>>> "Ewan" == Ewan D Milne <emilne@redhat.com> writes:

Ewan> The call to scsi_is_sas_rphy() needs to be made on the SAS
Ewan> end_device, not on the SCSI device.

Ewan> Fixes: 835831c57e9b ("ses: use scsi_is_sas_rphy instead of
Ewan> is_sas_attached") Reviewed-by: Johannes Thumshirn
Ewan> <jthumshirn@suse.de> Signed-off-by: Ewan D. Milne
Ewan> <emilne@redhat.com> ---
Ewan>  drivers/scsi/ses.c | 2 +- 1 file changed, 1 insertion(+), 1
Ewan>  deletion(-)

Ewan> diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c index
Ewan> 8c9a35c..50adabb 100644
Ewan> --- a/drivers/scsi/ses.c
Ewan> +++ b/drivers/scsi/ses.c
Ewan> @@ -587,7 +587,7 @@ static void ses_match_to_enclosure(struct
Ewan> enclosure_device *edev,
 
Ewan>  	ses_enclosure_data_process(edev,
Ewan>  	to_scsi_device(edev->edev.parent), 0);
 
Ewan> - if (scsi_is_sas_rphy(&sdev->sdev_gendev))
Ewan> + if (scsi_is_sas_rphy(sdev->sdev_target->dev.parent))
Ewan>  		efd.addr = sas_get_address(sdev);
 
Ewan>  	if (efd.addr) {
Ewan> -- 1.8.3.1

James?
Johannes Thumshirn Jan. 17, 2017, 7:56 a.m. UTC | #2
On Mon, Jan 16, 2017 at 04:02:24PM -0500, Martin K . Petersen wrote:
> >>>>> "Ewan" == Ewan D Milne <emilne@redhat.com> writes:
> 
> Ewan> The call to scsi_is_sas_rphy() needs to be made on the SAS
> Ewan> end_device, not on the SCSI device.
> 
> Ewan> Fixes: 835831c57e9b ("ses: use scsi_is_sas_rphy instead of
> Ewan> is_sas_attached") Reviewed-by: Johannes Thumshirn
> Ewan> <jthumshirn@suse.de> Signed-off-by: Ewan D. Milne
> Ewan> <emilne@redhat.com> ---
> Ewan>  drivers/scsi/ses.c | 2 +- 1 file changed, 1 insertion(+), 1
> Ewan>  deletion(-)
> 
> Ewan> diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c index
> Ewan> 8c9a35c..50adabb 100644
> Ewan> --- a/drivers/scsi/ses.c
> Ewan> +++ b/drivers/scsi/ses.c
> Ewan> @@ -587,7 +587,7 @@ static void ses_match_to_enclosure(struct
> Ewan> enclosure_device *edev,
>  
> Ewan>  	ses_enclosure_data_process(edev,
> Ewan>  	to_scsi_device(edev->edev.parent), 0);
>  
> Ewan> - if (scsi_is_sas_rphy(&sdev->sdev_gendev))
> Ewan> + if (scsi_is_sas_rphy(sdev->sdev_target->dev.parent))
> Ewan>  		efd.addr = sas_get_address(sdev);
>  
> Ewan>  	if (efd.addr) {
> Ewan> -- 1.8.3.1
> 
> James?

FWIW I have positive test results from a customer of ours with this as well.

Thanks,
	Johannes
James Bottomley Jan. 17, 2017, 2:47 p.m. UTC | #3
On Mon, 2017-01-09 at 16:33 -0500, Ewan D. Milne wrote:
> From: "Ewan D. Milne" <emilne@redhat.com>
> 
> The call to scsi_is_sas_rphy() needs to be made on the
> SAS end_device, not on the SCSI device.
> 
> Fixes: 835831c57e9b ("ses: use scsi_is_sas_rphy instead of
> is_sas_attached")
> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
> Signed-off-by: Ewan D. Milne <emilne@redhat.com>

Yes, looks good to me as well

Reviewed-by: James Bottomley <James.Bottomley@HansenPartnership.com>


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Martin K. Petersen Jan. 17, 2017, 7:02 p.m. UTC | #4
>>>>> "Ewan" == Ewan D Milne <emilne@redhat.com> writes:

Ewan> The call to scsi_is_sas_rphy() needs to be made on the SAS
Ewan> end_device, not on the SCSI device.

Applied to 4.10/scsi-fixes.
diff mbox

Patch

diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c
index 8c9a35c..50adabb 100644
--- a/drivers/scsi/ses.c
+++ b/drivers/scsi/ses.c
@@ -587,7 +587,7 @@  static void ses_match_to_enclosure(struct enclosure_device *edev,
 
 	ses_enclosure_data_process(edev, to_scsi_device(edev->edev.parent), 0);
 
-	if (scsi_is_sas_rphy(&sdev->sdev_gendev))
+	if (scsi_is_sas_rphy(sdev->sdev_target->dev.parent))
 		efd.addr = sas_get_address(sdev);
 
 	if (efd.addr) {