diff options
Diffstat (limited to 'drivers/scsi/scsi_lib.c')
| -rw-r--r-- | drivers/scsi/scsi_lib.c | 9 | 
1 files changed, 5 insertions, 4 deletions
| diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index b2c95dbe9d65..ead6405f3e51 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -682,11 +682,11 @@ static int __scsi_error_from_host_byte(struct scsi_cmnd *cmd, int result)  		error = -ENOLINK;  		break;  	case DID_TARGET_FAILURE: -		cmd->result |= (DID_OK << 16); +		set_host_byte(cmd, DID_OK);  		error = -EREMOTEIO;  		break;  	case DID_NEXUS_FAILURE: -		cmd->result |= (DID_OK << 16); +		set_host_byte(cmd, DID_OK);  		error = -EBADE;  		break;  	default: @@ -880,6 +880,7 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)  				    cmd->cmnd[0] == WRITE_SAME)) {  				description = "Discard failure";  				action = ACTION_FAIL; +				error = -EREMOTEIO;  			} else  				action = ACTION_FAIL;  			break; @@ -2567,7 +2568,7 @@ void *scsi_kmap_atomic_sg(struct scatterlist *sgl, int sg_count,  	if (*len > sg_len)  		*len = sg_len; -	return kmap_atomic(page, KM_BIO_SRC_IRQ); +	return kmap_atomic(page);  }  EXPORT_SYMBOL(scsi_kmap_atomic_sg); @@ -2577,6 +2578,6 @@ EXPORT_SYMBOL(scsi_kmap_atomic_sg);   */  void scsi_kunmap_atomic_sg(void *virt)  { -	kunmap_atomic(virt, KM_BIO_SRC_IRQ); +	kunmap_atomic(virt);  }  EXPORT_SYMBOL(scsi_kunmap_atomic_sg); | 
