/*
* Tell the user about the drive if we decided it exists.
*/
-static void mfm_geometry (int drive)
+static void mfm_geometry(int drive)
{
- if (mfm_info[drive].cylinders)
- printk ("mfm%c: %dMB CHS=%d/%d/%d LCC=%d RECOMP=%d\n", 'a' + drive,
- mfm_info[drive].cylinders * mfm_info[drive].heads * mfm_info[drive].sectors / 4096,
- mfm_info[drive].cylinders, mfm_info[drive].heads, mfm_info[drive].sectors,
- mfm_info[drive].lowcurrent, mfm_info[drive].precomp);
+ struct mfm_info *p = mfm_info + drive;
+ struct gendisk *disk = mfm_gendisk + drive;
+ if (p->cylinders)
+ printk ("%s: %dMB CHS=%d/%d/%d LCC=%d RECOMP=%d\n",
+ disk->major_name,
+ p->cylinders * p->heads * p->sectors / 4096,
+ p->cylinders, p->heads, p->sectors,
+ p->lowcurrent, p->precomp);
+ set_capacity(disk, p->cylinders * p->heads * p->sectors / 2);
}
#ifdef CONFIG_BLK_DEV_MFM_AUTODETECT
if (raw_cmd.dev == drive)
mfm_specify ();
mfm_geometry (drive);
- set_capacity(&mfm_gendisk[drive], mfm_info[drive].cylinders * mfm_info[drive].heads * mfm_info[drive].sectors / 2);
}
}
outw(0x80, mfm_irqenable); /* Required to enable IRQs from MFM podule */
for (i = 0; i < mfm_drives; i++) {
- add_gendisk(mfm_gendisk + i);
- mfm_geometry (i);
- register_disk(mfm_gendisk + i, mk_kdev(MAJOR_NR,i<<6), 1<<6,
- &mfm_fops,
- mfm_info[i].cylinders * mfm_info[i].heads *
- mfm_info[i].sectors / 2);
+ mfm_geometry(i);
+ add_disk(mfm_gendisk + i);
}
}
disk->major_name = names + 9 * n;
disk->minor_shift = DAC960_MaxPartitionsBits;
disk->fops = &DAC960_BlockDeviceOperations;
- add_gendisk(disk);
}
/*
Indicate the Block Device Registration completed successfully,
if (Controller == NULL) continue;
DAC960_InitializeController(Controller);
for (disk = 0; disk < DAC960_MaxLogicalDrives; disk++) {
- long size = disk_size(Controller, disk);
- register_disk(&Controller->disks[disk],
- DAC960_KernelDevice(Controller->ControllerNumber, disk, 0),
- DAC960_MaxPartitions, &DAC960_BlockDeviceOperations, size);
+ set_capacity(&Controller->disks[disk], disk_size(Controller, disk));
+ add_disk(&Controller->disks[disk]);
}
}
DAC960_CreateProcEntries();
Controller->LogicalDriveInitiallyAccessible[LogicalDriveNumber] = true;
size = disk_size(Controller, LogicalDriveNumber);
/* BROKEN, same as modular ide-floppy/ide-disk; same fix - ->probe() */
- register_disk(&Controller->disks[LogicalDriveNumber],
- DAC960_KernelDevice(Controller->ControllerNumber, LogicalDriveNumber, 0),
- DAC960_MaxPartitions, &DAC960_BlockDeviceOperations, size);
+ set_capacity(&Controller->disks[LogicalDriveNumber], size);
+ add_disk(&Controller->disks[LogicalDriveNumber]);
}
if (!get_capacity(&Controller->disks[LogicalDriveNumber]))
return -ENXIO;
disk->major_name = acsi_names + 4*i;
disk->minor_shift = (acsi_info[i].type==HARDDISK)?4:0;
disk->fops = &acsi_fops;
- add_gendisk(disk);
- register_disk(disk, mk_kdev(disk->major, disk->first_minor),
- 1<<disk->minor_shift,
- disk->fops,
- acsi_info[i].size);
+ set_capacity(disk, acsi_info[i].size);
+ add_disk(disk);
}
}
continue;
(BLK_DEFAULT_QUEUE(MAJOR_NR + ctlr))->hardsect_size = drv->block_size;
disk->major_name = hba[ctlr]->names + 12 * i;
- add_gendisk(disk);
- register_disk(disk,
- mk_kdev(disk->major, disk->first_minor),
- 1<<disk->minor_shift, disk->fops,
- drv->nr_blocks);
+ set_capacity(disk, drv->nr_blocks);
+ add_disk(disk);
}
hba[ctlr]->usage_count--;
return 0;
/* setup partitions per disk */
disk = &hba[ctlr]->gendisk[logvol];
disk->major_name = hba[ctlr]->names + 12 * logvol;
- add_gendisk(disk);
- register_disk(disk,
- mk_kdev(disk->major, disk->first_minor),
- 1<<disk->minor_shift,
- disk->fops,
- hba[ctlr]->drv[logvol].nr_blocks);
+ set_capacity(disk, hba[ctlr]->drv[logvol].nr_blocks);
+ add_disk(disk);
kfree(ld_buff);
kfree(size_buff);
continue;
(BLK_DEFAULT_QUEUE(MAJOR_NR + i))->hardsect_size = drv->block_size;
disk->major_name = hba[i]->names + 12 * j;
- add_gendisk(disk);
- register_disk(disk,
- mk_kdev(disk->major, disk->first_minor),
- 1<<disk->minor_shift, disk->fops,
- drv->nr_blocks);
+ set_capacity(disk, drv->nr_blocks);
+ add_disk(disk);
}
cciss_register_scsi(i, 1); /* hook ourself into SCSI subsystem */
continue;
disk->major_name = ida_names + (i*NWD+j)*10;
(BLK_DEFAULT_QUEUE(MAJOR_NR + i))->hardsect_size = drv->blk_size;
- add_gendisk(disk);
- register_disk(disk,
- mk_kdev(disk->major,disk->first_minor),
- 1<<disk->minor_shift, disk->fops,
- drv->nr_blks);
+ set_capacity(disk, drv->nr_blks);
+ add_disk(disk);
}
}
/* done ! */
continue;
(BLK_DEFAULT_QUEUE(MAJOR_NR + ctlr))->hardsect_size = drv->blk_size;
disk->major_name = ida_names + (ctlr*NWD+i)*10;
- add_gendisk(disk);
- register_disk(disk,
- mk_kdev(disk->major,disk->first_minor),
- 1<<disk->minor_shift, disk->fops,
- drv->nr_blks);
+ set_capacity(disk, drv->nr_blks);
+ add_disk(disk);
}
hba[ctlr]->usage_count--;
* This function registers the partitioning information in @gp
* with the kernel.
*/
-void
-add_gendisk(struct gendisk *gp)
+static void add_gendisk(struct gendisk *gp)
{
struct gendisk *sgp;
struct hd_struct *p = NULL;
write_unlock(&gendisk_lock);
}
-EXPORT_SYMBOL(add_gendisk);
+void add_disk(struct gendisk *disk)
+{
+ add_gendisk(disk);
+ register_disk(disk, mk_kdev(disk->major, disk->first_minor),
+ 1<<disk->minor_shift, disk->fops, get_capacity(disk));
+}
+
+EXPORT_SYMBOL(add_disk);
EXPORT_SYMBOL(del_gendisk);
void unlink_gendisk(struct gendisk *disk)
if (cd->present) {
struct gendisk *disk = &cd->disk;
register_cdrom(&cd->info);
- add_gendisk(disk);
- register_disk(disk,
- mk_kdev(disk->major,disk->first_minor),
- 1<<disk->minor_shift,
- disk->fops,
- 0);
+ add_disk(disk);
}
}
PD.gd.fops = &pd_fops;
PD.gd.major = major;
PD.gd.first_minor = unit << PD_BITS;
- add_gendisk(&PD.gd);
- register_disk(&PD.gd,mk_kdev(MAJOR_NR,unit<<PD_BITS),
- PD_PARTNS,&pd_fops,
- PD.capacity);
+ set_capacity(&PD.gd, PD.capacity);
+ add_disk(&PD.gd);
}
}
if (k)
struct gendisk *disk = &pf->disk;
if (!pf->present)
continue;
- add_gendisk(disk);
- register_disk(disk, mk_kdev(disk->major, disk->first_minor),
- 1<<disk->minor_shift, disk->fops,
- get_capacity(disk));
+ add_disk(disk);
}
return 0;
}
for (i = 0; i < ps2esdi_drives; i++) {
struct gendisk *disk = ps2esdi_gendisk + i;
- add_gendisk(disk);
- register_disk(disk, mk_kdev(disk->major,disk->first_minor),
- 1<<disk->minor_shift, disk->fops,
- ps2esdi_info[i].head * ps2esdi_info[i].sect *
+ set_capacity(disk, ps2esdi_info[i].head * ps2esdi_info[i].sect *
ps2esdi_info[i].cyl);
+ add_disk(disk);
}
return 0;
disk->major_name = mm_names + i*6;
disk->minor_shift = MM_SHIFT;
disk->fops = &mm_fops;
- add_gendisk(disk);
- register_disk(disk, mk_kdev(disk->major, disk->first_minor),
- 1<<disk->minor_shift,
- disk->fops,
- cards[i].mm_size << 1);
+ set_capacity(disk, cards[i].mm_size << 1);
+ add_disk(disk);
}
init_battery_timer();
for (i = 0; i < xd_drives; i++) {
struct gendisk *disk = xd_gendisk + i;
- add_gendisk(disk);
- register_disk(disk, mk_kdev(disk->major,disk->first_minor),
- 1<<disk->minor_shift,
- disk->fops,
- xd_info[i].heads * xd_info[i].cylinders *
+ set_capacity(disk, xd_info[i].heads * xd_info[i].cylinders *
xd_info[i].sectors);
+ add_disk(disk);
}
return 0;
scd_info.mask = deficiency;
if (register_cdrom(&scd_info))
goto errout0;
- add_gendisk(disk);
- register_disk(disk,
- mk_kdev(disk->major,disk->first_minor),
- 1<<disk->minor_shift,
- disk->fops,
- 0);
+ add_disk(disk);
}
printk(KERN_INFO "Cannot register for cdrom %d!\n", MAJOR_NR);
goto out_cdrom;
}
- add_gendisk(disk);
- register_disk(disk,
- mk_kdev(disk->major,disk->first_minor),
- 1<<disk->minor_shift,
- disk->fops,
- 0);
+ add_disk(disk);
blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), do_cm206_request,
&cm206_lock);
blk_queue_hardsect_size(BLK_DEFAULT_QUEUE(MAJOR_NR), 2048);
printk(KERN_ERR "mcd: Unable to register Mitsumi CD-ROM.\n");
goto out_cdrom;
}
- add_gendisk(disk);
- register_disk(disk,
- mk_kdev(disk->major,disk->first_minor),
- 1<<disk->minor_shift,
- disk->fops,
- 0);
+ add_disk(disk);
printk(msg);
return 0;
blk_cleanup_queue(BLK_DEFAULT_QUEUE(MAJOR_NR));
return 2;
}
- add_gendisk(disk);
- register_disk(disk,
- mk_kdev(disk->major,disk->first_minor),
- 1<<disk->minor_shift,
- disk->fops,
- 0);
+ add_disk(disk);
printk(msg);
return 0;
}
{
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);
+ add_disk(disk);
}
blk_queue_hardsect_size(BLK_DEFAULT_QUEUE(MAJOR_NR), CD_FRAMESIZE);
DRIVER(drive)->busy--;
cdrom_read_toc(drive, &sense);
- add_gendisk(g);
- register_disk(g, mk_kdev(g->major,g->first_minor),
- 1<<g->minor_shift, ide_fops,
- get_capacity(g));
+ add_disk(g);
return 0;
failed:
return 1;
g->de = drive->de;
g->flags = drive->removable ? GENHD_FL_REMOVABLE : 0;
g->flags |= GENHD_FL_DEVFS;
- add_gendisk(g);
- register_disk(g, mk_kdev(g->major,g->first_minor),
- 1<<g->minor_shift, ide_fops,
- current_capacity(drive));
+ set_capacity(g, current_capacity(drive));
+ add_disk(g);
return 0;
failed:
return 1;
g->de = drive->de;
g->flags = drive->removable ? GENHD_FL_REMOVABLE : 0;
g->flags |= GENHD_FL_DEVFS;
- add_gendisk(g);
- register_disk(g, mk_kdev(g->major,g->first_minor),
- 1<<g->minor_shift, ide_fops,
- get_capacity(g));
+ add_disk(g);
return 0;
failed:
return 1;
}
for(drive=0; drive < NR_HD; drive++) {
- add_gendisk(hd_gendisk + drive);
- register_disk(hd_gendisk + drive,
- mk_kdev(MAJOR_NR,drive<<6), 1<<6,
- &hd_fops, hd_info[drive].head * hd_info[drive].sect *
- hd_info[drive].cyl);
+ struct hd_i_struct *p = hd_info + drive;
+ set_capacity(hd_gendisk + drive, p->head * p->sect * p->cyl);
+ add_disk(hd_gendisk + drive);
}
}
mddev->state &= ~(1 << MD_SB_CLEAN);
md_update_sb(mddev);
md_recover_arrays();
- add_gendisk(disk);
- register_disk(disk, mk_kdev(disk->major,disk->first_minor),
- 1, &md_fops, md_size[mdidx(mddev)]<<1);
+ set_capacity(disk, md_size[mdidx(mddev)]<<1);
+ add_disk(disk);
disks[mdidx(mddev)] = disk;
return (0);
struct gendisk *p = &i2o_disk[unit>>4];
i2ob_install_device(i2ob_dev[unit].i2odev->controller,
i2ob_dev[unit].i2odev, unit);
- add_gendisk(p);
- register_disk(p,
- mk_kdev(p->major, p->first_minor),
- 1<<p->minor_shift, p->fops,
- get_capacity(p));
+ add_disk(p);
break;
}
printk(KERN_WARNING "Could not install I2O block device\n");
else
{
- struct gendisk *p = &i2o_disk[scan_unit>>4];
- add_gendisk(p);
- register_disk(p,
- mk_kdev(p->major, p->first_minor),
- 1<<p->minor_shift, p->fops,
- get_capacity(p));
+ add_disk(&i2o_disk[scan_unit>>4]);
scan_unit+=16;
i2ob_dev_count++;
printk(KERN_ERR "i2o_block: Could not install new device\n");
else
{
- struct gendisk *p = &i2o_disk[unit>>4];
- add_gendisk(p);
- register_disk(p,
- mk_kdev(p->major, p->first_minor),
- 1<<p->minor_shift, p->fops,
- get_capacity(p));
+ add_disk(&i2o_disk[unit>>4]);
i2ob_dev_count++;
i2o_device_notify_on(d, &i2o_block_handler);
}
partition->state = FTL_FORMATTED;
atomic_set(&partition->open, 0);
myparts[device] = partition;
- add_gendisk(disk);
- register_disk(disk, mk_kdev(MAJOR_NR, device << 4),
- MAX_PART, &ftl_blk_fops,
- le32_to_cpu(partition->header.FormattedSize)/SECTOR_SIZE);
+ set_capacity(disk, le32_to_cpu(partition->header.FormattedSize)/SECTOR_SIZE);
+ add_disk(disk);
#ifdef PCMCIA_DEBUG
printk(KERN_INFO "ftl_cs: opening %d kb FTL partition\n",
le32_to_cpu(partition->header.FormattedSize) >> 10);
}
set_capacit(disk, mtd->size>>9);
- add_gendisk(disk);
- register_disk(disk, mk_kdev(disk->major, disk->first_minor),
- 1<<disk->minor_shift, disk->fops, get_capacity(disk));
+ add_disk(disk);
DEBUG(1, "ok\n");
gd->first_minor = firstfree << NFTL_PARTN_BITS;
gd->minor_shift = NFTL_PARTN_BITS;
gd->major_name = name;
+ set_capacity(gd, nftl->nr_sects);
nftl->disk = gd;
- add_gendisk(gd);
- register_disk(gd, mk_kdev(MAJOR_NR,firstfree<<NFTL_PARTN_BITS),
- 1<<NFTL_PARTN_BITS, &nftl_fops, nftl->nr_sects);
+ add_disk(gd);
}
static void NFTL_unsetup(int i)
struct gendisk *disk = dasd_gendisk_by_dev(device->kdev);
if (disk == NULL)
return;
- add_gendisk(disk);
- register_disk(disk, mk_kdev(disk->major, disk->first_minor),
- 1<<disk->minor_shift, disk->fops,
- device->blocks << device->s2b_shift);
+ set_capacity(disk, device->blocks << device->s2b_shift);
+ add_disk(disk);
}
/*
disk->major_name = names[i];
disk->fops = &jsfd_fops;
disk->minor_shift = 0;
- add_gendisk(disk);
- register_disk(disk, mk_kdev(disk->major, disk->first_minor),
- 1<<disk->minor_shift, disk->fops,
- jdp->dsize >> 9);
+ set_capacity(disk, jdp->dsize >> 9);
+ add_disk(disk);
set_device_ro(MKDEV(JSFD_MAJOR, i), 1);
}
return 0;
if (sdkp && (0 == sdkp->capacity) && sdkp->device) {
sd_init_onedisk(sdkp, k);
if (!sdkp->has_been_registered) {
- add_gendisk(sd_disks[k]);
- register_disk(sd_disks[k], MKDEV_SD(k),
- 1<<4, &sd_fops,
- sdkp->capacity);
+ set_capacity(sd_disks[k], sdkp->capacity);
+ add_disk(sd_disks[k]);
sdkp->has_been_registered = 1;
}
}
&dev_attr_kdev);
disk->de = cd->device->de;
register_cdrom(&cd->cdi);
- add_gendisk(disk);
- register_disk(disk, mk_kdev(disk->major, disk->first_minor),
- 1<<disk->minor_shift, disk->fops, cd->capacity);
+ set_capacity(disk, cd->capacity);
+ add_disk(disk);
}
}
};
/* drivers/block/genhd.c */
-extern void add_gendisk(struct gendisk *gp);
+extern void add_disk(struct gendisk *disk);
extern void del_gendisk(struct gendisk *gp);
extern void unlink_gendisk(struct gendisk *gp);
extern struct gendisk *get_gendisk(kdev_t dev);