diff options
| author | Darrick J. Wong <djwong@us.ibm.com> | 2007-01-30 04:18:38 -0500 |
|---|---|---|
| committer | James Bottomley <jejb@mulgrave.localdomain> | 2007-07-18 12:15:05 -0400 |
| commit | 35a7f2f698d309cc50d98e56312dd907427b7ba4 (patch) | |
| tree | c874f6729e7651f47ff8496ca739c71b3c16bc5a | |
| parent | 3eb7a51a3ae0ed0227e051ecf75199fccbb4cc73 (diff) | |
[SCSI] sas_ata: sas_ata_qc_issue should return AC_ERR_*
The sas_ata_qc_issue function was incorrectly written to return error
codes such as -ENOMEM. Since libata OR's qc->err_mask with the
return value, It is necessary to make my code return one of the
AC_ERR_ codes instead. For now, use AC_ERR_SYSTEM because an error
here means that the OS couldn't send the command to the controller.
If anybody has a suggestion for a better AC_ERR_ code to use, please
suggest it.
Signed-off-by: Darrick J. Wong <djwong@us.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
| -rw-r--r-- | drivers/scsi/libsas/sas_ata.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c index 0bb1a149a9c2..46e1dbe1b843 100644 --- a/drivers/scsi/libsas/sas_ata.c +++ b/drivers/scsi/libsas/sas_ata.c | |||
| @@ -123,7 +123,7 @@ static void sas_ata_task_done(struct sas_task *task) | |||
| 123 | 123 | ||
| 124 | static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc) | 124 | static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc) |
| 125 | { | 125 | { |
| 126 | int res = -ENOMEM; | 126 | int res; |
| 127 | struct sas_task *task; | 127 | struct sas_task *task; |
| 128 | struct domain_device *dev = qc->ap->private_data; | 128 | struct domain_device *dev = qc->ap->private_data; |
| 129 | struct sas_ha_struct *sas_ha = dev->port->ha; | 129 | struct sas_ha_struct *sas_ha = dev->port->ha; |
| @@ -135,7 +135,7 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc) | |||
| 135 | 135 | ||
| 136 | task = sas_alloc_task(GFP_ATOMIC); | 136 | task = sas_alloc_task(GFP_ATOMIC); |
| 137 | if (!task) | 137 | if (!task) |
| 138 | goto out; | 138 | return AC_ERR_SYSTEM; |
| 139 | task->dev = dev; | 139 | task->dev = dev; |
| 140 | task->task_proto = SAS_PROTOCOL_STP; | 140 | task->task_proto = SAS_PROTOCOL_STP; |
| 141 | task->task_done = sas_ata_task_done; | 141 | task->task_done = sas_ata_task_done; |
| @@ -187,12 +187,10 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc) | |||
| 187 | SAS_DPRINTK("lldd_execute_task returned: %d\n", res); | 187 | SAS_DPRINTK("lldd_execute_task returned: %d\n", res); |
| 188 | 188 | ||
| 189 | sas_free_task(task); | 189 | sas_free_task(task); |
| 190 | if (res == -SAS_QUEUE_FULL) | 190 | return AC_ERR_SYSTEM; |
| 191 | return -ENOMEM; | ||
| 192 | } | 191 | } |
| 193 | 192 | ||
| 194 | out: | 193 | return 0; |
| 195 | return res; | ||
| 196 | } | 194 | } |
| 197 | 195 | ||
| 198 | static u8 sas_ata_check_status(struct ata_port *ap) | 196 | static u8 sas_ata_check_status(struct ata_port *ap) |
