diff options
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_scsih.c')
| -rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_scsih.c | 18 | 
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c index d901d4bffea..f612d1dc7ba 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c @@ -2915,7 +2915,7 @@ _scsih_ublock_io_all_device(struct MPT2SAS_ADAPTER *ioc)   * During device pull we need to appropiately set the sdev state.   */  static void -_scsih_ublock_io_device(struct MPT2SAS_ADAPTER *ioc, u16 handle) +_scsih_ublock_io_device(struct MPT2SAS_ADAPTER *ioc, u64 sas_address)  {  	struct MPT2SAS_DEVICE *sas_device_priv_data;  	struct scsi_device *sdev; @@ -2926,10 +2926,12 @@ _scsih_ublock_io_device(struct MPT2SAS_ADAPTER *ioc, u16 handle)  			continue;  		if (!sas_device_priv_data->block)  			continue; -		if (sas_device_priv_data->sas_target->handle == handle) { +		if (sas_device_priv_data->sas_target->sas_address == +								sas_address) {  			dewtprintk(ioc, sdev_printk(KERN_INFO, sdev,  			    MPT2SAS_INFO_FMT "SDEV_RUNNING: " -			    "handle(0x%04x)\n", ioc->name, handle)); +			    "sas address(0x%016llx)\n", ioc->name, +				(unsigned long long)sas_address));  			sas_device_priv_data->block = 0;  			scsi_internal_device_unblock(sdev);  		} @@ -3137,7 +3139,7 @@ _scsih_tm_tr_send(struct MPT2SAS_ADAPTER *ioc, u16 handle)  		dewtprintk(ioc, printk(MPT2SAS_INFO_FMT "setting delete flag: "  		"handle(0x%04x), sas_addr(0x%016llx)\n", ioc->name, handle,  			(unsigned long long)sas_address)); -		_scsih_ublock_io_device(ioc, handle); +		_scsih_ublock_io_device(ioc, sas_address);  		sas_target_priv_data->handle = MPT2SAS_INVALID_DEVICE_HANDLE;  	} @@ -5185,7 +5187,7 @@ _scsih_check_device(struct MPT2SAS_ADAPTER *ioc, u16 handle)  		return;  	}  	spin_unlock_irqrestore(&ioc->sas_device_lock, flags); -	_scsih_ublock_io_device(ioc, handle); +	_scsih_ublock_io_device(ioc, sas_address);  } @@ -5322,7 +5324,7 @@ _scsih_remove_device(struct MPT2SAS_ADAPTER *ioc,  	if (sas_device->starget && sas_device->starget->hostdata) {  		sas_target_priv_data = sas_device->starget->hostdata;  		sas_target_priv_data->deleted = 1; -		_scsih_ublock_io_device(ioc, sas_device->handle); +		_scsih_ublock_io_device(ioc, sas_device->sas_address);  		sas_target_priv_data->handle =  		     MPT2SAS_INVALID_DEVICE_HANDLE;  	} @@ -6998,8 +7000,8 @@ _scsih_remove_unresponding_sas_devices(struct MPT2SAS_ADAPTER *ioc)  	list_for_each_entry_safe(sas_device, sas_device_next,  	    &ioc->sas_device_list, list) {  		if (!sas_device->responding) -			_scsih_device_remove_by_handle(ioc, -			    sas_device->handle); +			mpt2sas_device_remove_by_sas_address(ioc, +				sas_device->sas_address);  		else  			sas_device->responding = 0;  	}  |