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 /drivers/scsi | |
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>
Diffstat (limited to 'drivers/scsi')
-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) |