diff options
| author | Linus Torvalds <torvalds@home.transmeta.com> | 2002-10-17 22:44:13 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-10-17 22:44:13 -0700 |
| commit | 95c45597fc4b15ca5bd07e574d57e07d8d661a3c (patch) | |
| tree | 25b93a6fb9f78c69a50ea3484f31c785b96f41ce | |
| parent | a3786fd837e2284ddd7f2e8b94e4c859d25b5c6f (diff) | |
Fix IDE init order dependency problem, noted by Jens Axboe.
This is pretty ugly, Al will fix up properly.
| -rw-r--r-- | drivers/ide/ide.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index 1b0db39435a7..23d39bcf3e0b 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c @@ -1526,7 +1526,19 @@ int ide_do_drive_cmd (ide_drive_t *drive, struct request *rq, ide_action_t actio #endif rq->errors = 0; rq->rq_status = RQ_ACTIVE; - rq->rq_dev = mk_kdev(drive->disk->major, drive->disk->first_minor); + + /* + * Aiee. This is ugly, but it gets called before "drive->disk" + * has been initialized. Al will fix it, I'm sure. + */ + if (drive->disk) + rq->rq_dev = mk_kdev(drive->disk->major, drive->disk->first_minor); + else { + printk("IDE init is ugly:"); + dump_stack(); + rq->rq_dev = mk_kdev(HWIF(drive)->major, (drive->select.b.unit) << PARTN_BITS); + } + rq->rq_disk = drive->disk; if (action == ide_wait) rq->waiting = &wait; |
