devfs (3/7) - cleanup devfs use in ide

devfs (3/7) - cleanup devfs use in ide

Post by Christoph Hellwi » Sat, 19 Apr 2003 18:20:48



Store the path of it's devfs directory in ide_drive_t.  Use
it in the devfs_register calls instead of the devfs_handle_t
which will go away soon.

diff -Nru a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
--- a/drivers/ide/ide-probe.c   Fri Apr 18 15:57:08 2003

        for (unit = 0; unit < MAX_DRIVES; ++unit) {
                ide_drive_t * drive = &hwif->drives[unit];
-               char name[64];
                ide_add_generic_settings(drive);
                snprintf(drive->gendev.bus_id,BUS_ID_SIZE,"%u.%u",

                drive->gendev.parent = &hwif->gendev;
                drive->gendev.bus = &ide_bus_type;
                drive->gendev.driver_data = drive;
-               sprintf (name, "ide/host%d/bus%d/target%d/lun%d",
-                       (hwif->channel && hwif->mate) ?
-                       hwif->mate->index : hwif->index,
-                       hwif->channel, unit, drive->lun);
                if (drive->present) {
                        device_register(&drive->gendev);
-                       drive->de = devfs_mk_dir(name);
+                       sprintf(drive->devfs_name, "ide/host%d/bus%d/target%d/lun%d",
+                               (hwif->channel && hwif->mate) ?
+                               hwif->mate->index : hwif->index,
+                               hwif->channel, unit, drive->lun);
+                       drive->de = devfs_mk_dir(drive->devfs_name);
                }
        }
        blk_register_region(MKDEV(hwif->major, 0), MAX_DRIVES << PARTN_BITS,
diff -Nru a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
--- a/drivers/ide/ide-tape.c    Fri Apr 18 15:57:08 2003

  */
 typedef struct {
        ide_drive_t *drive;
-       devfs_handle_t de_r, de_n;
-
        /*
         *      Since a typical character device operation requires more

        DRIVER(drive)->busy = 0;
        (void) ide_unregister_subdriver(drive);
        drive->driver_data = NULL;
-       devfs_unregister(tape->de_r);
-       devfs_unregister(tape->de_n);
+       devfs_remove("%s/mt");
+       devfs_remove("%s/mtn");
        devfs_unregister_tape(drive->disk->number);
        kfree (tape);

 static int idetape_attach (ide_drive_t *drive)
 {
        idetape_tape_t *tape;
+       char devfs_name[64];
        int minor;


                ;
        idetape_setup(drive, tape, minor);
        idetape_chrdevs[minor].drive = drive;
-       tape->de_r =
-           devfs_register (drive->de, "mt", DEVFS_FL_DEFAULT,
-                           HWIF(drive)->major, minor,
-                           S_IFCHR | S_IRUGO | S_IWUGO,
-                           &idetape_fops, NULL);
-       tape->de_n =
-           devfs_register (drive->de, "mtn", DEVFS_FL_DEFAULT,
-                           HWIF(drive)->major, minor + 128,
-                           S_IFCHR | S_IRUGO | S_IWUGO,
-                           &idetape_fops, NULL);
+
+       sprintf(devfs_name, "%s/mt", drive->devfs_name);
+       tape->de_r = devfs_register (NULL, devfs_name, 0,
+                       HWIF(drive)->major, minor,
+                       S_IFCHR | S_IRUGO | S_IWUGO,
+                       &idetape_fops, NULL);
+
+       sprintf(devfs_name, "%s/mtn", drive->devfs_name);
+       tape->de_n = devfs_register (NULL, devfs_name, 0,
+                       HWIF(drive)->major, minor + 128,
+                       S_IFCHR | S_IRUGO | S_IWUGO,
+                       &idetape_fops, NULL);
+
        drive->disk->number = devfs_register_tape(drive->de);
        drive->disk->fops = &idetape_block_ops;
        return 0;
diff -Nru a/drivers/ide/ide.c b/drivers/ide/ide.c
--- a/drivers/ide/ide.c Fri Apr 18 15:57:08 2003

         */
        for (i = 0; i < MAX_DRIVES; ++i) {
                drive = &hwif->drives[i];
-               if (drive->de) {
-                       devfs_unregister(drive->de);
-                       drive->de = NULL;
+               if (drive->devfs_name[0] != '\0') {
+                       devfs_remove(drive->devfs_name);
+                       drive->devfs_name[0] = '\0';
                }
                if (!drive->present)
                        continue;
diff -Nru a/include/linux/ide.h b/include/linux/ide.h
--- a/include/linux/ide.h       Fri Apr 18 15:57:08 2003

        struct hd_driveid       *id;    /* drive model identification info */
        struct proc_dir_entry *proc;    /* /proc/ide/ directory entry */
        struct ide_settings_s *settings;/* /proc/ide/ drive settings */
-       devfs_handle_t          de;     /* directory for device */
+       char            devfs_name[64]; /* devfs **/
+       devfs_handle_t          de;     /* will go away soon */

        struct hwif_s           *hwif;  /* actually (ide_hwif_t *) */

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://www.veryComputer.com/
Please read the FAQ at  http://www.veryComputer.com/