From: Bartlomiej Zolnierkiewicz - merge status checking code for rq->current_nr_sectors and !rq->current_nr_sectors cases - remove !rq->bio check as it is always true Signed-off-by: Bartlomiej Zolnierkiewicz Signed-off-by: Andrew Morton --- 25-akpm/drivers/ide/ide-taskfile.c | 19 ++++--------------- 1 files changed, 4 insertions(+), 15 deletions(-) diff -puN drivers/ide/ide-taskfile.c~ide-tiny-task_mulout_intr-config_ide_taskfile_io=n-cleanup drivers/ide/ide-taskfile.c --- 25/drivers/ide/ide-taskfile.c~ide-tiny-task_mulout_intr-config_ide_taskfile_io=n-cleanup Fri Jun 11 15:58:51 2004 +++ 25-akpm/drivers/ide/ide-taskfile.c Fri Jun 11 15:58:51 2004 @@ -505,29 +505,18 @@ ide_startstop_t task_mulout_intr (ide_dr u8 stat = hwif->INB(IDE_STATUS_REG); struct request *rq = HWGROUP(drive)->rq; char *pBuf = NULL; - ide_startstop_t startstop = ide_stopped; unsigned int msect = drive->mult_count; unsigned int nsect; unsigned long flags; - /* - * (ks/hs): Handle last IRQ on multi-sector transfer, - * occurs after all data was sent in this chunk - */ - if (rq->current_nr_sectors == 0) { + if (!OK_STAT(stat, DATA_READY, BAD_R_STAT) || !rq->current_nr_sectors) { if (stat & (ERR_STAT|DRQ_STAT)) { return DRIVER(drive)->error(drive, "task_mulout_intr", stat); } - if (!rq->bio) + /* Handle last IRQ, occurs after all data was sent. */ + if (!rq->current_nr_sectors) { DRIVER(drive)->end_request(drive, 1, 0); - return startstop; - } - /* - * DON'T be lazy code the above and below togather !!! - */ - if (!OK_STAT(stat,DATA_READY,BAD_R_STAT)) { - if (stat & (ERR_STAT|DRQ_STAT)) { - return DRIVER(drive)->error(drive, "task_mulout_intr", stat); + return ide_stopped; } /* no data yet, so wait for another interrupt */ if (HWGROUP(drive)->handler == NULL) _