Thread (2 messages) 2 messages, 2 authors, 2004-12-17

Re: [PATCH 2/3] libata - PIO error handling fix

From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Date: 2004-12-17 19:42:49

On Wed, 15 Dec 2004 17:50:59 +0800, Albert Lee [off-list ref] wrote:
Hi, Jeff:

  Tested burning CD-RW with libata-dev-2.6 and cdrecord:
1. ATAPI DMA mode - tested OK
2. ATAPI PIO mode - test failed when cdrecord finishes burning and issues MODE_SELECT to the device.

  After checking the log, it showed that MODE_SELECT caused ata_pio_complete() to return error.
However, the error is not handled by ata_pio_task().

Attached please find the patch for ata_pio_task() error handling for your review.
(The patch is against the libata-dev-2.6 tree. )

Changes in the patch:
1. End the PIO task when PIO_ST_IDLE state is entered
2. End the PIO task after PIO_ST_TMOUT and PIO_ST_ERR state handled by ata_pio_error()
3. Remove the first "if" statement to handle the error condition returned from
  ata_pio_block(), ata_pio_complete() and ata_pio_poll().
Jeff, 3. is the same issue + fix that was reported earlier by Tim.
It seems that we have both somehow forgot about it. :-|
  Change #2  is not so necessary since ata_pio_error() will put the cmd to  PIO_ST_IDLE state
after the error condition is handled. The change just saves a function call to queue_work().

Tested OK on on my machine with pdc20275 and ASUS CD-RW drive.
Patch looks fine for me.

Bartlomiej
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help