diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@trik.(none)> | 2005-04-02 19:31:35 +0200 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@trik.(none)> | 2005-04-02 19:31:35 +0200 |
commit | 2d10d2f9c037350f1271e64e39f242ec7953a50d (patch) | |
tree | bbee56651591274fb0620039491739ac9dcbee6e | |
parent | 49f0c7c7ba5f3cd7157a81d393253391f41736d5 (diff) | |
download | history-2d10d2f9c037350f1271e64e39f242ec7953a50d.tar.gz |
[ide] drive->dsc_overlap fix
drive->dsc_overlap is supported only by ide-{cd,tape} drivers.
Add missing clearing of ->dsc_overlap to ide_{cd,tape}_release()
and move ->dsc_overlap setup from ide_register_subdriver() to
ide_cdrom_setup() (ide-tape enables it unconditionally).
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
-rw-r--r-- | drivers/ide/ide-cd.c | 4 | ||||
-rw-r--r-- | drivers/ide/ide-tape.c | 1 | ||||
-rw-r--r-- | drivers/ide/ide.c | 5 |
3 files changed, 5 insertions, 5 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c index 4b96aa193161fb..dfa50ef0ad29b3 100644 --- a/drivers/ide/ide-cd.c +++ b/drivers/ide/ide-cd.c @@ -3219,6 +3219,9 @@ int ide_cdrom_setup (ide_drive_t *drive) */ blk_queue_hardsect_size(drive->queue, CD_FRAMESIZE); + if (drive->autotune == IDE_TUNE_DEFAULT || + drive->autotune == IDE_TUNE_AUTO) + drive->dsc_overlap = (drive->next != drive); #if 0 drive->dsc_overlap = (HWIF(drive)->no_dsc) ? 0 : 1; if (HWIF(drive)->no_dsc) { @@ -3282,6 +3285,7 @@ static void ide_cd_release(struct kref *kref) if (devinfo->handle == drive && unregister_cdrom(devinfo)) printk(KERN_ERR "%s: %s failed to unregister device from the cdrom " "driver.\n", __FUNCTION__, drive->name); + drive->dsc_overlap = 0; drive->driver_data = NULL; blk_queue_prep_rq(drive->queue, NULL); g->private_data = NULL; diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c index 913d762c5220d4..8802679c3eff90 100644 --- a/drivers/ide/ide-tape.c +++ b/drivers/ide/ide-tape.c @@ -4698,6 +4698,7 @@ static void ide_tape_release(struct kref *kref) ide_drive_t *drive = tape->drive; struct gendisk *g = drive->disk; + drive->dsc_overlap = 0; drive->driver_data = NULL; devfs_remove("%s/mt", drive->devfs_name); devfs_remove("%s/mtn", drive->devfs_name); diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index f1f1091894cc91..9990e2294308f0 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c @@ -2034,11 +2034,6 @@ int ide_register_subdriver(ide_drive_t *drive, ide_driver_t *driver) list_add_tail(&drive->list, &driver->drives); spin_unlock(&drives_lock); // printk(KERN_INFO "%s: attached %s driver.\n", drive->name, driver->name); - if ((drive->autotune == IDE_TUNE_DEFAULT) || - (drive->autotune == IDE_TUNE_AUTO)) { - /* DMA timings and setup moved to ide-probe.c */ - drive->dsc_overlap = (drive->next != drive && driver->supports_dsc_overlap); - } #ifdef CONFIG_PROC_FS if (drive->driver != &idedefault_driver) ide_add_proc_entries(drive->proc, driver->proc, drive); |