[PATCH] 2.5.20 IDE 85
- Work a bit on the automatic CRC error recovery handling. System still hangs. But one thing for sure - we don't have to use any specialized irq handler for it. - Since ioctl don't any longer submit requests to the queue without rq->special set, we can safely remove args_error handling from start_request. - Make REQ_SPECIAL usage in ide-floppy obvious. - Use REQ_SPECIAL everywhere instead of REQ_DRIVE_ACB. This is actually a bit dangerous but should work as far as I can see. - Unfold the now not REQ_SPECIAL specific dequeing part of ide_end_drive_cmd(). Turns out that we can thereafter remove the calls to ide_end_drice_cmd() at places where the request type isn't REQ_SPECIAL all any longer. (tcq.c) - After the above operation it turns out that there are just two places where ide_end_drive_cmd remains, namely: ata_error, task_no_data_intr drive_cmd_intr. We can avoid it by changing the logics in ata_error a slightly. So now just to cases remain where ide_end_drive_cmd remains used: drive_cmd_intr and task_no_data_intr. - Now looking a bit closer we can realize that drive_cmd_intr and task_no_data_intr can be easly merged together, since the usage of task_no_data_intr implied taskfile.sector_number == 0. - Use one single ata_special_intr function for the handling of interrupts submitted through ide_raw_cmd. - Move the remaining artefacts of ide_end_drive_cmd directly to ata_special_intr. Oh we don't need to check for REQ_SPECIAL any longer there, since the context is already known. - Set the ata_special_intr handler and command type directly inside ide_raw_taskfile to save code.
Showing
Please register or sign in to comment