]> git.hungrycats.org Git - linux/commitdiff
[PATCH] gendisk for pcd
authorAlexander Viro <viro@math.psu.edu>
Sat, 21 Sep 2002 09:41:51 +0000 (02:41 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Sat, 21 Sep 2002 09:41:51 +0000 (02:41 -0700)
pcd switched to use of gendisk

drivers/block/paride/pcd.c

index de78fa2198b860be5cfafc767f7b2f9a7c3fd199..508c081966c6ed0074fffa7b47216590e49e4f69 100644 (file)
@@ -224,6 +224,7 @@ struct pcd_unit {
        int present;            /* does this unit exist ? */
        char *name;             /* pcd0, pcd1, etc */
        struct cdrom_device_info info;  /* uniform cdrom interface */
+       struct gendisk disk;
 };
 
 struct pcd_unit pcd[PCD_UNITS];
@@ -282,6 +283,7 @@ static void pcd_init_units(void)
 
        pcd_drive_count = 0;
        for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++) {
+               struct gendisk *disk = &cd->disk;
                cd->pi = &cd->pia;
                cd->present = 0;
                cd->last_sense = 0;
@@ -298,6 +300,11 @@ static void pcd_init_units(void)
                cd->info.speed = 0;
                cd->info.capacity = 1;
                cd->info.mask = 0;
+               disk->major = major;
+               disk->first_minor = unit;
+               disk->minor_shift = 0;
+               disk->major_name = cd->name;
+               disk->fops = &pcd_bdops;
        }
 }
 
@@ -925,8 +932,15 @@ static int __init pcd_init(void)
 
        for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++) {
                if (cd->present) {
+                       struct gendisk *disk = &cd->disk;
                        register_cdrom(&cd->info);
-                       devfs_plain_cdrom(&cd->info, &pcd_bdops);
+                       devfs_plain_cdrom(&cd->info, disk->fops);
+                       add_gendisk(disk);
+                       register_disk(disk,
+                                     mk_kdev(disk->major,disk->first_minor),
+                                     1<<disk->minor_shift,
+                                     disk->fops,
+                                     0);
                }
        }
 
@@ -942,6 +956,7 @@ static void __exit pcd_exit(void)
 
        for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++) {
                if (cd->present) {
+                       del_gendisk(&cd->disk);
                        pi_release(cd->pi);
                        unregister_cdrom(&cd->info);
                }