|
@@ -1273,6 +1273,7 @@ _scsih_slave_alloc(struct scsi_device *sdev)
|
|
|
struct MPT3SAS_DEVICE *sas_device_priv_data;
|
|
|
struct scsi_target *starget;
|
|
|
struct _raid_device *raid_device;
|
|
|
+ struct _sas_device *sas_device;
|
|
|
unsigned long flags;
|
|
|
|
|
|
sas_device_priv_data = kzalloc(sizeof(struct scsi_device), GFP_KERNEL);
|
|
@@ -1301,6 +1302,19 @@ _scsih_slave_alloc(struct scsi_device *sdev)
|
|
|
spin_unlock_irqrestore(&ioc->raid_device_lock, flags);
|
|
|
}
|
|
|
|
|
|
+ if (!(sas_target_priv_data->flags & MPT_TARGET_FLAGS_VOLUME)) {
|
|
|
+ spin_lock_irqsave(&ioc->sas_device_lock, flags);
|
|
|
+ sas_device = mpt3sas_scsih_sas_device_find_by_sas_address(ioc,
|
|
|
+ sas_target_priv_data->sas_address);
|
|
|
+ if (sas_device && (sas_device->starget == NULL)) {
|
|
|
+ sdev_printk(KERN_INFO, sdev,
|
|
|
+ "%s : sas_device->starget set to starget @ %d\n",
|
|
|
+ __func__, __LINE__);
|
|
|
+ sas_device->starget = starget;
|
|
|
+ }
|
|
|
+ spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
|
|
|
+ }
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|