[SCSI] mpt2sas: modified _scsih_sas_device_find_by_handle/sas_address
authorKashyap, Desai <kashyap.desai@lsi.com>
Tue, 9 Mar 2010 11:02:17 +0000 (16:32 +0530)
committerJames Bottomley <James.Bottomley@suse.de>
Sun, 11 Apr 2010 14:23:28 +0000 (09:23 -0500)
modified _scsih_sas_device_find_by_handle
so to handle the search on both list(device list and device_init_list)
Also, we moved the priority of the
search so the ioc->sas_device_list is done first.  The
"sas_device_init_list" is only used during the 1st port enable, so its
unlikely there’s devices on it.

Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
Reviewed-by: Eric Moore <eric.moore@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/mpt2sas/mpt2sas_scsih.c

index 6f121a904d05e5850168373211f3e97ccb77dd09..72a9453739649e8c3a77f06b7bba6c13c9be3999 100644 (file)
@@ -484,27 +484,17 @@ struct _sas_device *
 mpt2sas_scsih_sas_device_find_by_sas_address(struct MPT2SAS_ADAPTER *ioc,
     u64 sas_address)
 {
-       struct _sas_device *sas_device, *r;
+       struct _sas_device *sas_device;
 
-       r = NULL;
-       /* check the sas_device_init_list */
-       list_for_each_entry(sas_device, &ioc->sas_device_init_list,
-           list) {
-               if (sas_device->sas_address != sas_address)
-                       continue;
-               r = sas_device;
-               goto out;
-       }
+       list_for_each_entry(sas_device, &ioc->sas_device_list, list)
+               if (sas_device->sas_address == sas_address)
+                       return sas_device;
 
-       /* then check the sas_device_list */
-       list_for_each_entry(sas_device, &ioc->sas_device_list, list) {
-               if (sas_device->sas_address != sas_address)
-                       continue;
-               r = sas_device;
-               goto out;
-       }
- out:
-       return r;
+       list_for_each_entry(sas_device, &ioc->sas_device_init_list, list)
+               if (sas_device->sas_address == sas_address)
+                       return sas_device;
+
+       return NULL;
 }
 
 /**
@@ -519,28 +509,17 @@ mpt2sas_scsih_sas_device_find_by_sas_address(struct MPT2SAS_ADAPTER *ioc,
 static struct _sas_device *
 _scsih_sas_device_find_by_handle(struct MPT2SAS_ADAPTER *ioc, u16 handle)
 {
-       struct _sas_device *sas_device, *r;
+       struct _sas_device *sas_device;
 
-       r = NULL;
-       if (ioc->wait_for_port_enable_to_complete) {
-               list_for_each_entry(sas_device, &ioc->sas_device_init_list,
-                   list) {
-                       if (sas_device->handle != handle)
-                               continue;
-                       r = sas_device;
-                       goto out;
-               }
-       } else {
-               list_for_each_entry(sas_device, &ioc->sas_device_list, list) {
-                       if (sas_device->handle != handle)
-                               continue;
-                       r = sas_device;
-                       goto out;
-               }
-       }
+       list_for_each_entry(sas_device, &ioc->sas_device_list, list)
+               if (sas_device->handle == handle)
+                       return sas_device;
 
- out:
-       return r;
+       list_for_each_entry(sas_device, &ioc->sas_device_init_list, list)
+               if (sas_device->handle == handle)
+                       return sas_device;
+
+       return NULL;
 }
 
 /**