diff options
| author | Alexander Viro <viro@math.psu.edu> | 2002-07-31 23:31:15 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-07-31 23:31:15 -0700 |
| commit | d7536161a456543c86286e4f4f2928eef4297fdb (patch) | |
| tree | 43edb651a07bab23cc2faefcf43de521d2798227 /fs/block_dev.c | |
| parent | 143fe0af17a2a5b229e67d91cf32687a72b4f3d7 (diff) | |
[PATCH] split "gendisk" to be per-disk, part 1
now that gendisks don't have shared stuff (we used to set blk_size[]
from ->sizes) we can start splitting them into per-disk ones.
Step 1:
we introduce a new field - ->first_minor (to be merged with ->major
into dev_t of entire disk once all gendisks are split). All arrays
are assumed to start at that minor (i.e. gd->part[minor] got replaced
with gd->part[minor - gd->first_minor], etc.). get_gendisk() is
taught to pick the right gendisk if there are several with the same
major.
Diffstat (limited to 'fs/block_dev.c')
| -rw-r--r-- | fs/block_dev.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index 62c973eeb278..5723ad522ee5 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -599,9 +599,10 @@ static int do_open(struct block_device *bdev, struct inode *inode, struct file * bdev->bd_offset = 0; if (g) { - bdev->bd_inode->i_size = - (loff_t) g->part[minor(dev)].nr_sects << 9; - bdev->bd_offset = g->part[minor(dev)].start_sect; + struct hd_struct *p; + p = g->part + minor(dev) - g->first_minor; + bdev->bd_inode->i_size = (loff_t) p->nr_sects << 9; + bdev->bd_offset = p->start_sect; } else if (blk_size[major(dev)]) bdev->bd_inode->i_size = (loff_t) blk_size[major(dev)][minor(dev)] << 10; |
