On Wednesday 24 June 2009 08:49:29 David Miller wrote: > From: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> > Date: Tue, 23 Jun 2009 23:26:06 +0200 > > > @@ -152,7 +152,7 @@ void ide_kill_rq(ide_drive_t *drive, str > > > > if ((media == ide_floppy || media == ide_tape) && drv_req) { > > rq->errors = 0; > > - ide_complete_rq(drive, 0, blk_rq_bytes(rq)); > > + ide_complete_rq(drive, -EIO, blk_rq_bytes(rq)); > > } else { > > if (media == ide_tape) > > rq->errors = IDE_DRV_ERROR_GENERAL; > > I've done some research and this logic of returning "0" appears to be > intentional. > > It keeps the block layer from printing the "I/O error" kernel log > message during completion of the request. It would be pretty illogical behavior for driver to intentionally not let user know about the failed requests.. > IDE tape as one example, seems to have it's own system of passing > errors back up to the special command completion, via rq->errors > and IDE_DRV_ERROR_GENERAL. Please look at the patch/code: rq->errors = 0; - ide_complete_rq(drive, 0, blk_rq_bytes(rq)); + ide_complete_rq(drive, -EIO, blk_rq_bytes(rq)); and notice rq->errors line. > See idetape_queue_rw_tail() and ide_tape_callback() for example. > > IDE floppy has similar pieces of logic, and possibly similar desires > wrt. emission of the block layer I/O error log message during > special requests. > > When something sticks out like an eyesore (as this -EIO thing does) > and seems to make no sense at all, there often is some obscure > reason. The obscure reasons is just the fact that both ide-floppy and ide-tape had a they own duplicated/buggy request completion routines. While they were being unified the whole bunch of similar class of bugs were fixed so I agree that there may still be more issues to deal with there. -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html