2005-09-26 00:05:09

by Shaun Savage

[permalink] [raw]
Subject: get partition size of block device from another block device.

HI All

I am writing a block device driver that uses another block device for
its "base storage".

First the block device sturctures questions.
there is one 'struct gendisk' per disk. with partitions under this
->part[N].
there is one 'struct block_device' is the file system device, one per
disk or one part partition?
Is ther one kobject for each disk or partition?

-----------------------------------

one of the module parameters passed in is the base device. eather
/dev/hda1 or 0x0301, which format is the best?
module_parm_array(str_dev, charp, &dev_cnt,0);
or
module_parm_array(dev_dev, ushort, &dev_cnt,0);

from string to gendisk
bdev = lookup_bdev(str_dev); then finds the
block_device
gd = get_gendisk(bdev->bd_dev,MINOR(bdev->bd_dev))

OR

gd= get_gendisk(dev_dev,MINOR(dev_dev))
bdev = bdget_disk(gd, MINOR(dev_dev))
This confuses me, if there is one gendisk per disk why does get_gendisk
need a partition number?

OR

something with kobject?

----------------------------------------------------------
Now to get ther size.
numberOfSectors =gd->part[MINOR(dev)]->nr_sects

Now I need to 'open' the device for r/w
bd_claim()
or
open_bdev_excl()

Now read and write data to the sub block device