[SCSI] ipr: slave_alloc optimization
authorbrking@us.ibm.com <brking@us.ibm.com>
Tue, 1 Nov 2005 23:01:07 +0000 (17:01 -0600)
committerJames Bottomley <jejb@mulgrave.(none)>
Sun, 6 Nov 2005 19:02:46 +0000 (13:02 -0600)
Optimize ipr's slave_alloc to return -ENXIO for devices that
do not exist.

Signed-off-by: Brian King <brking@us.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/ipr.c

index 63d01e6..8817ea0 100644 (file)
@@ -2815,13 +2815,14 @@ static int ipr_slave_configure(struct scsi_device *sdev)
  * handling new commands.
  *
  * Return value:
- *     0 on success
+ *     0 on success / -ENXIO if device does not exist
  **/
 static int ipr_slave_alloc(struct scsi_device *sdev)
 {
        struct ipr_ioa_cfg *ioa_cfg = (struct ipr_ioa_cfg *) sdev->host->hostdata;
        struct ipr_resource_entry *res;
        unsigned long lock_flags;
+       int rc = -ENXIO;
 
        sdev->hostdata = NULL;
 
@@ -2836,13 +2837,14 @@ static int ipr_slave_alloc(struct scsi_device *sdev)
                        res->in_erp = 0;
                        sdev->hostdata = res;
                        res->needs_sync_complete = 1;
+                       rc = 0;
                        break;
                }
        }
 
        spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
 
-       return 0;
+       return rc;
 }
 
 /**