]> err.no Git - linux-2.6/blobdiff - drivers/ide/ide-taskfile.c
Merge master.kernel.org:/home/rmk/linux-2.6-arm
[linux-2.6] / drivers / ide / ide-taskfile.c
index 0606bd2f6020fe7c3a3fc2485cf05e7893880fc1..a839b2a8f6f485d17f30a1d861bbb7ecb7deda63 100644 (file)
@@ -196,8 +196,7 @@ ide_startstop_t set_geometry_intr (ide_drive_t *drive)
        if (stat & (ERR_STAT|DRQ_STAT))
                return ide_error(drive, "set_geometry_intr", stat);
 
-       if (HWGROUP(drive)->handler != NULL)
-               BUG();
+       BUG_ON(HWGROUP(drive)->handler != NULL);
        ide_set_handler(drive, &set_geometry_intr, WAIT_WORSTCASE, NULL);
        return ide_started;
 }
@@ -375,7 +374,13 @@ static void task_end_request(ide_drive_t *drive, struct request *rq, u8 stat)
                }
        }
 
-       ide_end_request(drive, 1, rq->hard_nr_sectors);
+       if (rq->rq_disk) {
+               ide_driver_t *drv;
+
+               drv = *(ide_driver_t **)rq->rq_disk->private_data;;
+               drv->end_request(drive, 1, rq->hard_nr_sectors);
+       } else
+               ide_end_request(drive, 1, rq->hard_nr_sectors);
 }
 
 /*