diff options
| author | Alexander Viro <viro@math.psu.edu> | 2002-09-21 02:42:19 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-09-21 02:42:19 -0700 |
| commit | b39472ce4dbacc5c38d4e7103440c5c2d770e7e1 (patch) | |
| tree | dd77580f7255f9332eb9322bccec4fd01fd2057e /drivers/cdrom | |
| parent | f52c303457712728419d10523971030ffffa8456 (diff) | |
[PATCH] gendisk for sbpcd
sbpcd switched to use of gendisk
Diffstat (limited to 'drivers/cdrom')
| -rw-r--r-- | drivers/cdrom/sbpcd.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/cdrom/sbpcd.c b/drivers/cdrom/sbpcd.c index 1dae164fdcee..f5a99a7d95f7 100644 --- a/drivers/cdrom/sbpcd.c +++ b/drivers/cdrom/sbpcd.c @@ -722,7 +722,7 @@ static struct sbpcd_drive { u_char mode_xb_8; u_char delay; struct cdrom_device_info *sbpcd_infop; - + struct gendisk disk; } D_S[NR_SBPCD]; static struct sbpcd_drive *current_drive = D_S; @@ -5777,6 +5777,7 @@ int __init sbpcd_init(void) for (j=0;j<NR_SBPCD;j++) { struct cdrom_device_info * sbpcd_infop; + struct gendisk *disk; struct sbpcd_drive *p = D_S + j; if (p->drv_id==-1) continue; @@ -5829,6 +5830,12 @@ int __init sbpcd_init(void) sbpcd_infop->dev = mk_kdev(MAJOR_NR, j); sbpcd_infop->handle = p; p->sbpcd_infop = sbpcd_infop; + disk = &p->disk; + disk->major = MAJOR_NR; + disk->first_minor = j; + disk->minor_shift = 0; + disk->fops = &sbpcd_bdops; + disk->major_name = sbpcd_infop->name; sprintf(nbuff, "c0t%d/cd", p->drv_id); sbpcd_infop->de = devfs_register (devfs_handle, nbuff, DEVFS_FL_DEFAULT, @@ -5838,6 +5845,12 @@ int __init sbpcd_init(void) { printk(" sbpcd: Unable to register with Uniform CD-ROm driver\n"); } + add_gendisk(disk); + register_disk(disk, + mk_kdev(disk->major,disk->first_minor), + 1<<disk->minor_shift, + disk->fops, + 0); } blk_queue_hardsect_size(BLK_DEFAULT_QUEUE(MAJOR_NR), CD_FRAMESIZE); @@ -5863,6 +5876,7 @@ void sbpcd_exit(void) for (j=0;j<NR_SBPCD;j++) { if (D_S[j].drv_id==-1) continue; + del_gendisk(&D_S[j].disk); vfree(D_S[j].sbp_buf); if (D_S[j].sbp_audsiz>0) vfree(D_S[j].aud_buf); if ((unregister_cdrom(D_S[j].sbpcd_infop) == -EINVAL)) |
