--- 2.3.46pre1/drivers/block/ide.c Fri Feb 11 00:05:33 2000 +++ /tmp/ide.c Wed Feb 16 18:46:33 2000 @@ -1164,8 +1164,7 @@ || (drive->sleep && (!best->sleep || 0 < (signed long)(best->sleep - drive->sleep))) || (!best->sleep && 0 < (signed long)(WAKEUP(best) - WAKEUP(drive)))) { - struct blk_dev_struct *bdev = &blk_dev[HWIF(drive)->major]; - if( !bdev->request_queue.plugged ) + if( !drive->queue.plugged ) best = drive; } } @@ -1229,7 +1228,6 @@ */ static void ide_do_request (ide_hwgroup_t *hwgroup, int masked_irq) { - struct blk_dev_struct *bdev; ide_drive_t *drive; ide_hwif_t *hwif; ide_startstop_t startstop; @@ -1246,9 +1244,6 @@ hwgroup->rq = NULL; drive = hwgroup->drive; do { - bdev = &blk_dev[HWIF(drive)->major]; - if( !bdev->request_queue.plugged ) - bdev->request_queue.current_request = NULL; /* (broken since patch-2.1.15) */ if (drive->sleep && (!sleep || 0 < (signed long)(sleep - drive->sleep))) sleep = drive->sleep; } while ((drive = drive->next) != hwgroup->drive); @@ -1285,10 +1280,9 @@ drive->sleep = 0; drive->service_start = jiffies; - bdev = &blk_dev[hwif->major]; - if ( bdev->request_queue.plugged ) /* FIXME: paranoia */ + if ( drive->queue.plugged ) /* paranoia */ printk("%s: Huh? nuking plugged queue\n", drive->name); - bdev->request_queue.current_request = hwgroup->rq = drive->queue.current_request; + hwgroup->rq = drive->queue.current_request; /* * Some systems have trouble with IDE IRQs arriving while * the driver is still setting things up. So, here we disable