ide: call ide_proc_register_driver() later
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Fri, 10 Oct 2008 20:39:27 +0000 (22:39 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Fri, 10 Oct 2008 20:39:27 +0000 (22:39 +0200)
Call ide_proc_register_driver() in ide*_setup() (just before
ide*_add_settings() call) instead of in ->probe method.

Despite being basically a preparation for /proc/ide/hd*/settings
rework this is a nice cleanup in itself.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-cd.c
drivers/ide/ide-disk.c
drivers/ide/ide-floppy.c
drivers/ide/ide-tape.c
drivers/scsi/ide-scsi.c

index 607af5de16f8ab60bc3c4b502b05343570a79635..34a1aeaa15dd9bd4873731b53aef839348e57a98 100644 (file)
@@ -1924,6 +1924,8 @@ static int ide_cdrom_setup(ide_drive_t *drive)
                cd->devinfo.handle = NULL;
                return 1;
        }
+
+       ide_proc_register_driver(drive, cd->driver);
        ide_cdrom_add_settings(drive);
        return 0;
 }
@@ -2134,8 +2136,6 @@ static int ide_cd_probe(ide_drive_t *drive)
 
        ide_init_disk(g, drive);
 
-       ide_proc_register_driver(drive, &ide_cdrom_driver);
-
        kref_init(&info->kref);
 
        info->drive = drive;
@@ -2150,7 +2150,6 @@ static int ide_cd_probe(ide_drive_t *drive)
        g->driverfs_dev = &drive->gendev;
        g->flags = GENHD_FL_CD | GENHD_FL_REMOVABLE;
        if (ide_cdrom_setup(drive)) {
-               ide_proc_unregister_driver(drive, &ide_cdrom_driver);
                ide_cd_release(&info->kref);
                goto failed;
        }
index 6e1a25e61df50c734fb394b621d28a7e3cc60daa..5fc4213437a5f42330635316de0f2a70308341d1 100644 (file)
@@ -782,11 +782,13 @@ static inline void idedisk_add_settings(ide_drive_t *drive) { ; }
 
 static void idedisk_setup(ide_drive_t *drive)
 {
+       struct ide_disk_obj *idkp = drive->driver_data;
        ide_hwif_t *hwif = drive->hwif;
        u16 *id = drive->id;
        char *m = (char *)&id[ATA_ID_PROD];
        unsigned long long capacity;
 
+       ide_proc_register_driver(drive, idkp->driver);
        idedisk_add_settings(drive);
 
        if (drive->id_read == 0)
@@ -1151,8 +1153,6 @@ static int ide_disk_probe(ide_drive_t *drive)
 
        ide_init_disk(g, drive);
 
-       ide_proc_register_driver(drive, &idedisk_driver);
-
        kref_init(&idkp->kref);
 
        idkp->drive = drive;
index b0f4d8459a9d9849de5c9de4a03e4e72aff5a505..597459c81d5f93f932d83cf7f6f8692ec09a955a 100644 (file)
@@ -1061,6 +1061,8 @@ static void idefloppy_setup(ide_drive_t *drive, idefloppy_floppy_t *floppy)
        }
 
        (void) ide_floppy_get_capacity(drive);
+
+       ide_proc_register_driver(drive, floppy->driver);
        idefloppy_add_settings(drive);
 }
 
@@ -1413,8 +1415,6 @@ static int ide_floppy_probe(ide_drive_t *drive)
 
        ide_init_disk(g, drive);
 
-       ide_proc_register_driver(drive, &idefloppy_driver);
-
        kref_init(&floppy->kref);
 
        floppy->drive = drive;
index 874e60fc85d16e15073f132d08427bb2940b31f7..f41983e4a4e4248055038a535635057c06318543 100644 (file)
@@ -2514,6 +2514,7 @@ static void idetape_setup(ide_drive_t *drive, idetape_tape_t *tape, int minor)
                tape->best_dsc_rw_freq * 1000 / HZ,
                drive->using_dma ? ", DMA":"");
 
+       ide_proc_register_driver(drive, tape->driver);
        idetape_add_settings(drive);
 }
 
@@ -2669,8 +2670,6 @@ static int ide_tape_probe(ide_drive_t *drive)
 
        ide_init_disk(g, drive);
 
-       ide_proc_register_driver(drive, &idetape_driver);
-
        kref_init(&tape->kref);
 
        tape->drive = drive;
index d9a2cc09f5c683db73e304b6226171559beaa06c..02bd5c487d1f07160bdfcabd00b83e103002c9c5 100644 (file)
@@ -460,6 +460,7 @@ static void idescsi_setup (ide_drive_t *drive, idescsi_scsi_t *scsi)
 
        drive->pc_callback = ide_scsi_callback;
 
+       ide_proc_register_driver(drive, scsi->driver);
        idescsi_add_settings(drive);
 }
 
@@ -851,7 +852,6 @@ static int ide_scsi_probe(ide_drive_t *drive)
        idescsi->host = host;
        idescsi->disk = g;
        g->private_data = &idescsi->driver;
-       ide_proc_register_driver(drive, &idescsi_driver);
        err = 0;
        idescsi_setup(drive, idescsi);
        g->fops = &idescsi_ops;