diff options
| author | Alexander Viro <viro@parcelfarce.linux.theplanet.co.uk> | 2003-04-27 03:47:38 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2003-04-27 03:47:38 -0700 |
| commit | 07affbb1eadddfbab8e2270ee17965419887d8a2 (patch) | |
| tree | a1f506bc3939d605fc1f3017610c3cbefe999624 | |
| parent | 5e3ecdac24a4311ee8fa5c2203165e2bec8907e1 (diff) | |
[PATCH] bdget_disk()
New helper - bdget_disk(gendisk, partition)
invalidate_device() replaced with invalidate_partition(disk, part)
| -rw-r--r-- | drivers/block/floppy.c | 2 | ||||
| -rw-r--r-- | drivers/block/floppy98.c | 2 | ||||
| -rw-r--r-- | drivers/block/genhd.c | 11 | ||||
| -rw-r--r-- | drivers/block/ioctl.c | 2 | ||||
| -rw-r--r-- | drivers/md/dm-ioctl.c | 4 | ||||
| -rw-r--r-- | drivers/md/md.c | 2 | ||||
| -rw-r--r-- | fs/block_dev.c | 2 | ||||
| -rw-r--r-- | fs/inode.c | 10 | ||||
| -rw-r--r-- | fs/partitions/check.c | 15 | ||||
| -rw-r--r-- | include/linux/fs.h | 2 | ||||
| -rw-r--r-- | include/linux/genhd.h | 5 | ||||
| -rw-r--r-- | kernel/ksyms.c | 1 |
12 files changed, 29 insertions, 29 deletions
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index e85256befeec..ee016885325c 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -3885,7 +3885,7 @@ static int floppy_read_block_0(struct gendisk *disk) struct block_device *bdev; int ret; - bdev = bdget(MKDEV(disk->major, disk->first_minor)); + bdev = bdget_disk(disk, 0); if (!bdev) { printk("No block device for %s\n", disk->disk_name); BUG(); diff --git a/drivers/block/floppy98.c b/drivers/block/floppy98.c index a01a515f0618..226b0cee8a20 100644 --- a/drivers/block/floppy98.c +++ b/drivers/block/floppy98.c @@ -3995,7 +3995,7 @@ static int floppy_read_block_0(struct gendisk *disk) struct block_device *bdev; int ret; - bdev = bdget(MKDEV(disk->major, disk->first_minor)); + bdev = bdget_disk(disk, 0); if (!bdev) { printk("No block device for %s\n", disk->disk_name); BUG(); diff --git a/drivers/block/genhd.c b/drivers/block/genhd.c index 34d9d4dd91fc..fe922bcc5805 100644 --- a/drivers/block/genhd.c +++ b/drivers/block/genhd.c @@ -721,6 +721,17 @@ int bdev_read_only(struct block_device *bdev) return disk->policy; } +int invalidate_partition(struct gendisk *disk, int index) +{ + int res = 0; + struct block_device *bdev = bdget_disk(disk, index); + if (bdev) + res = __invalidate_device(bdev, 1); + bdput(bdev); + return res; +} + EXPORT_SYMBOL(bdev_read_only); EXPORT_SYMBOL(set_device_ro); EXPORT_SYMBOL(set_disk_ro); +EXPORT_SYMBOL(invalidate_partition); diff --git a/drivers/block/ioctl.c b/drivers/block/ioctl.c index 3dbd0824319b..04aae2485102 100644 --- a/drivers/block/ioctl.c +++ b/drivers/block/ioctl.c @@ -62,7 +62,7 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg *arg) if (disk->part[part - 1]->nr_sects == 0) return -ENXIO; /* partition in use? Incomplete check for now. */ - bdevp = bdget(MKDEV(disk->major, disk->first_minor) + part); + bdevp = bdget_disk(disk, part); if (!bdevp) return -ENOMEM; if (bd_claim(bdevp, &holder) < 0) { diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c index 96cabf795823..cb667cdf69d1 100644 --- a/drivers/md/dm-ioctl.c +++ b/drivers/md/dm-ioctl.c @@ -450,11 +450,11 @@ static int __info(struct mapped_device *md, struct dm_ioctl *param) if (dm_suspended(md)) param->flags |= DM_SUSPEND_FLAG; - param->dev = MKDEV(disk->major, disk->first_minor); - bdev = bdget(param->dev); + bdev = bdget_disk(disk, 0); if (!bdev) return -ENXIO; + param->dev = bdev->bd_dev; param->open_count = bdev->bd_openers; bdput(bdev); diff --git a/drivers/md/md.c b/drivers/md/md.c index c4dfcf47de3b..272bef26e781 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -1684,7 +1684,7 @@ static int do_md_stop(mddev_t * mddev, int ro) del_timer_sync(&mddev->safemode_timer); - invalidate_device(mk_kdev(disk->major, disk->first_minor), 1); + invalidate_partition(disk, 0); if (ro) { err = -ENXIO; diff --git a/fs/block_dev.c b/fs/block_dev.c index edd8effee850..7b53dd72cb26 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -535,7 +535,7 @@ static int do_open(struct block_device *bdev, struct inode *inode, struct file * } else { struct hd_struct *p; struct block_device *whole; - whole = bdget(MKDEV(disk->major, disk->first_minor)); + whole = bdget_disk(disk, 0); ret = -ENOMEM; if (!whole) goto out_first; diff --git a/fs/inode.c b/fs/inode.c index 6e9b869fe9d2..9440ffe76b08 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -365,16 +365,6 @@ int __invalidate_device(struct block_device *bdev, int do_sync) return res; } -int invalidate_device(kdev_t dev, int do_sync) -{ - int res = 0; - struct block_device *bdev = bdget(kdev_t_to_nr(dev)); - if (bdev) - res = __invalidate_device(bdev, do_sync); - bdput(bdev); - return res; -} - static int can_unuse(struct inode *inode) { if (inode->i_state) diff --git a/fs/partitions/check.c b/fs/partitions/check.c index f185f0284dc3..a8530c42211f 100644 --- a/fs/partitions/check.c +++ b/fs/partitions/check.c @@ -311,7 +311,7 @@ void register_disk(struct gendisk *disk) if (!get_capacity(disk)) return; - bdev = bdget(MKDEV(disk->major, disk->first_minor)); + bdev = bdget_disk(disk, 0); if (blkdev_get(bdev, FMODE_READ, 0, BDEV_RAW) < 0) return; state = check_partition(disk, bdev); @@ -336,13 +336,12 @@ void register_disk(struct gendisk *disk) int rescan_partitions(struct gendisk *disk, struct block_device *bdev) { - kdev_t dev = to_kdev_t(bdev->bd_dev); struct parsed_partitions *state; int p, res; if (bdev->bd_part_count) return -EBUSY; - res = invalidate_device(dev, 1); + res = invalidate_partition(disk, 0); if (res) return res; bdev->bd_invalidated = 0; @@ -391,18 +390,14 @@ fail: void del_gendisk(struct gendisk *disk) { - int max_p = disk->minors; - kdev_t devp; int p; /* invalidate stuff */ - for (p = max_p - 1; p > 0; p--) { - devp = mk_kdev(disk->major,disk->first_minor + p); - invalidate_device(devp, 1); + for (p = disk->minors - 1; p > 0; p--) { + invalidate_partition(disk, p); delete_partition(disk, p); } - devp = mk_kdev(disk->major,disk->first_minor); - invalidate_device(devp, 1); + invalidate_partition(disk, 0); disk->capacity = 0; disk->flags &= ~GENHD_FL_UP; unlink_gendisk(disk); diff --git a/include/linux/fs.h b/include/linux/fs.h index 26aa1bd539f1..572b92e6f443 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1105,7 +1105,7 @@ extern int fs_may_remount_ro(struct super_block *); extern int check_disk_change(struct block_device *); extern int invalidate_inodes(struct super_block *); extern int __invalidate_device(struct block_device *, int); -extern int invalidate_device(kdev_t, int); +extern int invalidate_partition(struct gendisk *, int); unsigned long invalidate_mapping_pages(struct address_space *mapping, pgoff_t start, pgoff_t end); unsigned long invalidate_inode_pages(struct address_space *mapping); diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 096643e667ae..35e93e35455d 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h @@ -367,6 +367,11 @@ extern void blk_register_region(dev_t dev, unsigned long range, void *data); extern void blk_unregister_region(dev_t dev, unsigned long range); +static inline struct block_device *bdget_disk(struct gendisk *disk, int index) +{ + return bdget(MKDEV(disk->major, disk->first_minor) + index); +} + #endif #endif diff --git a/kernel/ksyms.c b/kernel/ksyms.c index c55d5a57ea85..8c8cff48895d 100644 --- a/kernel/ksyms.c +++ b/kernel/ksyms.c @@ -188,7 +188,6 @@ EXPORT_SYMBOL(files_lock); EXPORT_SYMBOL(check_disk_change); EXPORT_SYMBOL(invalidate_bdev); EXPORT_SYMBOL(invalidate_inodes); -EXPORT_SYMBOL(invalidate_device); EXPORT_SYMBOL(__invalidate_device); EXPORT_SYMBOL(invalidate_inode_pages); EXPORT_SYMBOL_GPL(invalidate_inode_pages2); |
