libata-eh.c (c3fa32b9764dc45dcf8a2231b1c110abc4a63e0b) | libata-eh.c (3915c3b5b10cd127198c1f9e2aefff7808500d92) |
---|---|
1/* 2 * libata-eh.c - libata error handling 3 * 4 * Maintained by: Tejun Heo <tj@kernel.org> 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 * on emails. 7 * 8 * Copyright 2006 Tejun Heo <htejun@gmail.com> --- 1308 unchanged lines hidden (view full) --- 1317/** 1318 * ata_eh_qc_retry - Tell midlayer to retry an ATA command after EH 1319 * @qc: Command to retry 1320 * 1321 * Indicate to the mid and upper layers that an ATA command 1322 * should be retried. To be used from EH. 1323 * 1324 * SCSI midlayer limits the number of retries to scmd->allowed. | 1/* 2 * libata-eh.c - libata error handling 3 * 4 * Maintained by: Tejun Heo <tj@kernel.org> 5 * Please ALWAYS copy linux-ide@vger.kernel.org 6 * on emails. 7 * 8 * Copyright 2006 Tejun Heo <htejun@gmail.com> --- 1308 unchanged lines hidden (view full) --- 1317/** 1318 * ata_eh_qc_retry - Tell midlayer to retry an ATA command after EH 1319 * @qc: Command to retry 1320 * 1321 * Indicate to the mid and upper layers that an ATA command 1322 * should be retried. To be used from EH. 1323 * 1324 * SCSI midlayer limits the number of retries to scmd->allowed. |
1325 * scmd->allowed is incremented for commands which get retried | 1325 * scmd->retries is decremented for commands which get retried |
1326 * due to unrelated failures (qc->err_mask is zero). 1327 */ 1328void ata_eh_qc_retry(struct ata_queued_cmd *qc) 1329{ 1330 struct scsi_cmnd *scmd = qc->scsicmd; | 1326 * due to unrelated failures (qc->err_mask is zero). 1327 */ 1328void ata_eh_qc_retry(struct ata_queued_cmd *qc) 1329{ 1330 struct scsi_cmnd *scmd = qc->scsicmd; |
1331 if (!qc->err_mask) 1332 scmd->allowed++; | 1331 if (!qc->err_mask && scmd->retries) 1332 scmd->retries--; |
1333 __ata_eh_qc_complete(qc); 1334} 1335 1336/** 1337 * ata_dev_disable - disable ATA device 1338 * @dev: ATA device to disable 1339 * 1340 * Disable @dev. --- 947 unchanged lines hidden (view full) --- 2288 const char *text; 2289 } cmd_descr[] = { 2290 { ATA_CMD_DEV_RESET, "DEVICE RESET" }, 2291 { ATA_CMD_CHK_POWER, "CHECK POWER MODE" }, 2292 { ATA_CMD_STANDBY, "STANDBY" }, 2293 { ATA_CMD_IDLE, "IDLE" }, 2294 { ATA_CMD_EDD, "EXECUTE DEVICE DIAGNOSTIC" }, 2295 { ATA_CMD_DOWNLOAD_MICRO, "DOWNLOAD MICROCODE" }, | 1333 __ata_eh_qc_complete(qc); 1334} 1335 1336/** 1337 * ata_dev_disable - disable ATA device 1338 * @dev: ATA device to disable 1339 * 1340 * Disable @dev. --- 947 unchanged lines hidden (view full) --- 2288 const char *text; 2289 } cmd_descr[] = { 2290 { ATA_CMD_DEV_RESET, "DEVICE RESET" }, 2291 { ATA_CMD_CHK_POWER, "CHECK POWER MODE" }, 2292 { ATA_CMD_STANDBY, "STANDBY" }, 2293 { ATA_CMD_IDLE, "IDLE" }, 2294 { ATA_CMD_EDD, "EXECUTE DEVICE DIAGNOSTIC" }, 2295 { ATA_CMD_DOWNLOAD_MICRO, "DOWNLOAD MICROCODE" }, |
2296 { ATA_CMD_DOWNLOAD_MICRO_DMA, "DOWNLOAD MICROCODE DMA" }, |
|
2296 { ATA_CMD_NOP, "NOP" }, 2297 { ATA_CMD_FLUSH, "FLUSH CACHE" }, 2298 { ATA_CMD_FLUSH_EXT, "FLUSH CACHE EXT" }, 2299 { ATA_CMD_ID_ATA, "IDENTIFY DEVICE" }, 2300 { ATA_CMD_ID_ATAPI, "IDENTIFY PACKET DEVICE" }, 2301 { ATA_CMD_SERVICE, "SERVICE" }, 2302 { ATA_CMD_READ, "READ DMA" }, 2303 { ATA_CMD_READ_EXT, "READ DMA EXT" }, --- 4 unchanged lines hidden (view full) --- 2308 { ATA_CMD_WRITE_EXT, "WRITE DMA EXT" }, 2309 { ATA_CMD_WRITE_QUEUED, "WRITE DMA QUEUED EXT" }, 2310 { ATA_CMD_WRITE_STREAM_EXT, "WRITE STREAM EXT" }, 2311 { ATA_CMD_WRITE_STREAM_DMA_EXT, "WRITE STREAM DMA EXT" }, 2312 { ATA_CMD_WRITE_FUA_EXT, "WRITE DMA FUA EXT" }, 2313 { ATA_CMD_WRITE_QUEUED_FUA_EXT, "WRITE DMA QUEUED FUA EXT" }, 2314 { ATA_CMD_FPDMA_READ, "READ FPDMA QUEUED" }, 2315 { ATA_CMD_FPDMA_WRITE, "WRITE FPDMA QUEUED" }, | 2297 { ATA_CMD_NOP, "NOP" }, 2298 { ATA_CMD_FLUSH, "FLUSH CACHE" }, 2299 { ATA_CMD_FLUSH_EXT, "FLUSH CACHE EXT" }, 2300 { ATA_CMD_ID_ATA, "IDENTIFY DEVICE" }, 2301 { ATA_CMD_ID_ATAPI, "IDENTIFY PACKET DEVICE" }, 2302 { ATA_CMD_SERVICE, "SERVICE" }, 2303 { ATA_CMD_READ, "READ DMA" }, 2304 { ATA_CMD_READ_EXT, "READ DMA EXT" }, --- 4 unchanged lines hidden (view full) --- 2309 { ATA_CMD_WRITE_EXT, "WRITE DMA EXT" }, 2310 { ATA_CMD_WRITE_QUEUED, "WRITE DMA QUEUED EXT" }, 2311 { ATA_CMD_WRITE_STREAM_EXT, "WRITE STREAM EXT" }, 2312 { ATA_CMD_WRITE_STREAM_DMA_EXT, "WRITE STREAM DMA EXT" }, 2313 { ATA_CMD_WRITE_FUA_EXT, "WRITE DMA FUA EXT" }, 2314 { ATA_CMD_WRITE_QUEUED_FUA_EXT, "WRITE DMA QUEUED FUA EXT" }, 2315 { ATA_CMD_FPDMA_READ, "READ FPDMA QUEUED" }, 2316 { ATA_CMD_FPDMA_WRITE, "WRITE FPDMA QUEUED" }, |
2317 { ATA_CMD_FPDMA_SEND, "SEND FPDMA QUEUED" }, 2318 { ATA_CMD_FPDMA_RECV, "RECEIVE FPDMA QUEUED" }, |
|
2316 { ATA_CMD_PIO_READ, "READ SECTOR(S)" }, 2317 { ATA_CMD_PIO_READ_EXT, "READ SECTOR(S) EXT" }, 2318 { ATA_CMD_PIO_WRITE, "WRITE SECTOR(S)" }, 2319 { ATA_CMD_PIO_WRITE_EXT, "WRITE SECTOR(S) EXT" }, 2320 { ATA_CMD_READ_MULTI, "READ MULTIPLE" }, 2321 { ATA_CMD_READ_MULTI_EXT, "READ MULTIPLE EXT" }, 2322 { ATA_CMD_WRITE_MULTI, "WRITE MULTIPLE" }, 2323 { ATA_CMD_WRITE_MULTI_EXT, "WRITE MULTIPLE EXT" }, --- 10 unchanged lines hidden (view full) --- 2334 { ATA_CMD_READ_NATIVE_MAX, "READ NATIVE MAX ADDRESS" }, 2335 { ATA_CMD_READ_NATIVE_MAX_EXT, "READ NATIVE MAX ADDRESS EXT" }, 2336 { ATA_CMD_SET_MAX, "SET MAX ADDRESS" }, 2337 { ATA_CMD_SET_MAX_EXT, "SET MAX ADDRESS EXT" }, 2338 { ATA_CMD_READ_LOG_EXT, "READ LOG EXT" }, 2339 { ATA_CMD_WRITE_LOG_EXT, "WRITE LOG EXT" }, 2340 { ATA_CMD_READ_LOG_DMA_EXT, "READ LOG DMA EXT" }, 2341 { ATA_CMD_WRITE_LOG_DMA_EXT, "WRITE LOG DMA EXT" }, | 2319 { ATA_CMD_PIO_READ, "READ SECTOR(S)" }, 2320 { ATA_CMD_PIO_READ_EXT, "READ SECTOR(S) EXT" }, 2321 { ATA_CMD_PIO_WRITE, "WRITE SECTOR(S)" }, 2322 { ATA_CMD_PIO_WRITE_EXT, "WRITE SECTOR(S) EXT" }, 2323 { ATA_CMD_READ_MULTI, "READ MULTIPLE" }, 2324 { ATA_CMD_READ_MULTI_EXT, "READ MULTIPLE EXT" }, 2325 { ATA_CMD_WRITE_MULTI, "WRITE MULTIPLE" }, 2326 { ATA_CMD_WRITE_MULTI_EXT, "WRITE MULTIPLE EXT" }, --- 10 unchanged lines hidden (view full) --- 2337 { ATA_CMD_READ_NATIVE_MAX, "READ NATIVE MAX ADDRESS" }, 2338 { ATA_CMD_READ_NATIVE_MAX_EXT, "READ NATIVE MAX ADDRESS EXT" }, 2339 { ATA_CMD_SET_MAX, "SET MAX ADDRESS" }, 2340 { ATA_CMD_SET_MAX_EXT, "SET MAX ADDRESS EXT" }, 2341 { ATA_CMD_READ_LOG_EXT, "READ LOG EXT" }, 2342 { ATA_CMD_WRITE_LOG_EXT, "WRITE LOG EXT" }, 2343 { ATA_CMD_READ_LOG_DMA_EXT, "READ LOG DMA EXT" }, 2344 { ATA_CMD_WRITE_LOG_DMA_EXT, "WRITE LOG DMA EXT" }, |
2345 { ATA_CMD_TRUSTED_NONDATA, "TRUSTED NON-DATA" }, |
|
2342 { ATA_CMD_TRUSTED_RCV, "TRUSTED RECEIVE" }, 2343 { ATA_CMD_TRUSTED_RCV_DMA, "TRUSTED RECEIVE DMA" }, 2344 { ATA_CMD_TRUSTED_SND, "TRUSTED SEND" }, 2345 { ATA_CMD_TRUSTED_SND_DMA, "TRUSTED SEND DMA" }, 2346 { ATA_CMD_PMP_READ, "READ BUFFER" }, | 2346 { ATA_CMD_TRUSTED_RCV, "TRUSTED RECEIVE" }, 2347 { ATA_CMD_TRUSTED_RCV_DMA, "TRUSTED RECEIVE DMA" }, 2348 { ATA_CMD_TRUSTED_SND, "TRUSTED SEND" }, 2349 { ATA_CMD_TRUSTED_SND_DMA, "TRUSTED SEND DMA" }, 2350 { ATA_CMD_PMP_READ, "READ BUFFER" }, |
2351 { ATA_CMD_PMP_READ_DMA, "READ BUFFER DMA" }, |
|
2347 { ATA_CMD_PMP_WRITE, "WRITE BUFFER" }, | 2352 { ATA_CMD_PMP_WRITE, "WRITE BUFFER" }, |
2353 { ATA_CMD_PMP_WRITE_DMA, "WRITE BUFFER DMA" }, |
|
2348 { ATA_CMD_CONF_OVERLAY, "DEVICE CONFIGURATION OVERLAY" }, 2349 { ATA_CMD_SEC_SET_PASS, "SECURITY SET PASSWORD" }, 2350 { ATA_CMD_SEC_UNLOCK, "SECURITY UNLOCK" }, 2351 { ATA_CMD_SEC_ERASE_PREP, "SECURITY ERASE PREPARE" }, 2352 { ATA_CMD_SEC_ERASE_UNIT, "SECURITY ERASE UNIT" }, 2353 { ATA_CMD_SEC_FREEZE_LOCK, "SECURITY FREEZE LOCK" }, 2354 { ATA_CMD_SEC_DISABLE_PASS, "SECURITY DISABLE PASSWORD" }, 2355 { ATA_CMD_CONFIG_STREAM, "CONFIGURE STREAM" }, 2356 { ATA_CMD_SMART, "SMART" }, 2357 { ATA_CMD_MEDIA_LOCK, "DOOR LOCK" }, 2358 { ATA_CMD_MEDIA_UNLOCK, "DOOR UNLOCK" }, 2359 { ATA_CMD_DSM, "DATA SET MANAGEMENT" }, 2360 { ATA_CMD_CHK_MED_CRD_TYP, "CHECK MEDIA CARD TYPE" }, 2361 { ATA_CMD_CFA_REQ_EXT_ERR, "CFA REQUEST EXTENDED ERROR" }, 2362 { ATA_CMD_CFA_WRITE_NE, "CFA WRITE SECTORS WITHOUT ERASE" }, 2363 { ATA_CMD_CFA_TRANS_SECT, "CFA TRANSLATE SECTOR" }, 2364 { ATA_CMD_CFA_ERASE, "CFA ERASE SECTORS" }, 2365 { ATA_CMD_CFA_WRITE_MULT_NE, "CFA WRITE MULTIPLE WITHOUT ERASE" }, | 2354 { ATA_CMD_CONF_OVERLAY, "DEVICE CONFIGURATION OVERLAY" }, 2355 { ATA_CMD_SEC_SET_PASS, "SECURITY SET PASSWORD" }, 2356 { ATA_CMD_SEC_UNLOCK, "SECURITY UNLOCK" }, 2357 { ATA_CMD_SEC_ERASE_PREP, "SECURITY ERASE PREPARE" }, 2358 { ATA_CMD_SEC_ERASE_UNIT, "SECURITY ERASE UNIT" }, 2359 { ATA_CMD_SEC_FREEZE_LOCK, "SECURITY FREEZE LOCK" }, 2360 { ATA_CMD_SEC_DISABLE_PASS, "SECURITY DISABLE PASSWORD" }, 2361 { ATA_CMD_CONFIG_STREAM, "CONFIGURE STREAM" }, 2362 { ATA_CMD_SMART, "SMART" }, 2363 { ATA_CMD_MEDIA_LOCK, "DOOR LOCK" }, 2364 { ATA_CMD_MEDIA_UNLOCK, "DOOR UNLOCK" }, 2365 { ATA_CMD_DSM, "DATA SET MANAGEMENT" }, 2366 { ATA_CMD_CHK_MED_CRD_TYP, "CHECK MEDIA CARD TYPE" }, 2367 { ATA_CMD_CFA_REQ_EXT_ERR, "CFA REQUEST EXTENDED ERROR" }, 2368 { ATA_CMD_CFA_WRITE_NE, "CFA WRITE SECTORS WITHOUT ERASE" }, 2369 { ATA_CMD_CFA_TRANS_SECT, "CFA TRANSLATE SECTOR" }, 2370 { ATA_CMD_CFA_ERASE, "CFA ERASE SECTORS" }, 2371 { ATA_CMD_CFA_WRITE_MULT_NE, "CFA WRITE MULTIPLE WITHOUT ERASE" }, |
2372 { ATA_CMD_REQ_SENSE_DATA, "REQUEST SENSE DATA EXT" }, 2373 { ATA_CMD_SANITIZE_DEVICE, "SANITIZE DEVICE" }, |
|
2366 { ATA_CMD_READ_LONG, "READ LONG (with retries)" }, 2367 { ATA_CMD_READ_LONG_ONCE, "READ LONG (without retries)" }, 2368 { ATA_CMD_WRITE_LONG, "WRITE LONG (with retries)" }, 2369 { ATA_CMD_WRITE_LONG_ONCE, "WRITE LONG (without retries)" }, 2370 { ATA_CMD_RESTORE, "RECALIBRATE" }, 2371 { 0, NULL } /* terminate list */ 2372 }; 2373 --- 1766 unchanged lines hidden --- | 2374 { ATA_CMD_READ_LONG, "READ LONG (with retries)" }, 2375 { ATA_CMD_READ_LONG_ONCE, "READ LONG (without retries)" }, 2376 { ATA_CMD_WRITE_LONG, "WRITE LONG (with retries)" }, 2377 { ATA_CMD_WRITE_LONG_ONCE, "WRITE LONG (without retries)" }, 2378 { ATA_CMD_RESTORE, "RECALIBRATE" }, 2379 { 0, NULL } /* terminate list */ 2380 }; 2381 --- 1766 unchanged lines hidden --- |