From: Bartlomiej Zolnierkiewicz Setup handler and output first data block directly from ->prehandler() instead of calling ->handler(). The only change in functionality is that we no longer check DRIVE_READY status bits (there is no need to do it). Signed-off-by: Bartlomiej Zolnierkiewicz Signed-off-by: Andrew Morton --- 25-akpm/drivers/ide/ide-taskfile.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff -puN drivers/ide/ide-taskfile.c~ide_tf_pio_out_prehandler drivers/ide/ide-taskfile.c --- 25/drivers/ide/ide-taskfile.c~ide_tf_pio_out_prehandler 2004-06-30 10:40:34.931536160 -0700 +++ 25-akpm/drivers/ide/ide-taskfile.c 2004-06-30 10:40:34.936535400 -0700 @@ -698,7 +698,10 @@ ide_startstop_t pre_task_out_intr (ide_d if (!drive->unmask) local_irq_disable(); - return task_out_intr(drive); + ide_set_handler(drive, &task_out_intr, WAIT_WORSTCASE, NULL); + task_sectors(drive, rq, 1, IDE_PIO_OUT); + + return ide_started; } EXPORT_SYMBOL(pre_task_out_intr); @@ -762,7 +765,10 @@ ide_startstop_t pre_task_mulout_intr (id if (!drive->unmask) local_irq_disable(); - return task_mulout_intr(drive); + ide_set_handler(drive, &task_mulout_intr, WAIT_WORSTCASE, NULL); + task_multi_sectors(drive, rq, IDE_PIO_OUT); + + return ide_started; } EXPORT_SYMBOL(pre_task_mulout_intr); _