aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@trik.(none)>2005-04-02 19:31:35 +0200
committerBartlomiej Zolnierkiewicz <bzolnier@trik.(none)>2005-04-02 19:31:35 +0200
commit2d10d2f9c037350f1271e64e39f242ec7953a50d (patch)
treebbee56651591274fb0620039491739ac9dcbee6e
parent49f0c7c7ba5f3cd7157a81d393253391f41736d5 (diff)
downloadhistory-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.c4
-rw-r--r--drivers/ide/ide-tape.c1
-rw-r--r--drivers/ide/ide.c5
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);