From: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>

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 <bzolnier@elka.pw.edu.pl>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 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);
 
_