diff options
| author | Alexander Viro <viro@parcelfarce.linux.theplanet.co.uk> | 2003-04-27 03:47:29 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2003-04-27 03:47:29 -0700 |
| commit | 5e3ecdac24a4311ee8fa5c2203165e2bec8907e1 (patch) | |
| tree | b191a578f0655c8b19133094c7e0911efd9bc95a | |
| parent | 80e96b51bbd4cd4a10402fe4a274bfb105057e06 (diff) | |
[PATCH] blkmtd init cleanup
Obvious cleanup of the code in init_blkmtd(). Killed code duplication,
replaced opening underlying block device manually with use of appropriate
helpers.
| -rw-r--r-- | drivers/mtd/devices/blkmtd.c | 48 |
1 files changed, 9 insertions, 39 deletions
diff --git a/drivers/mtd/devices/blkmtd.c b/drivers/mtd/devices/blkmtd.c index be43a9b3956d..fe2102690862 100644 --- a/drivers/mtd/devices/blkmtd.c +++ b/drivers/mtd/devices/blkmtd.c @@ -1049,17 +1049,10 @@ extern dev_t name_to_dev_t(char *line) __init; /* Startup */ static int __init init_blkmtd(void) { -#ifdef MODULE - struct file *file = NULL; - struct inode *inode; -#endif - - int maj, min; int i, blocksize, blocksize_bits; loff_t size; int readonly = 0; int erase_size = CONFIG_MTD_BLKDEV_ERASESIZE; - dev_t rdev; struct block_device *bdev; int err; int mode; @@ -1092,47 +1085,24 @@ static int __init init_blkmtd(void) mode = (readonly) ? O_RDONLY : O_RDWR; #ifdef MODULE - - file = filp_open(device, mode, 0); - if(IS_ERR(file)) { - printk("blkmtd: error, can't open device %s\n", device); - DEBUG(2, "blkmtd: filp_open returned %ld\n", PTR_ERR(file)); - return 1; - } - - /* determine is this is a block device and if so get its major and minor - numbers */ - inode = file->f_dentry->d_inode; - if(!S_ISBLK(inode->i_mode)) { - printk("blkmtd: %s not a block device\n", device); - filp_close(file, NULL); - return 1; - } - rdev = inode->i_bdev->bd_dev; - filp_close(file, NULL); + bdev = open_bdev_excl(device, mode, BDEV_RAW, NULL); #else - rdev = name_to_dev_t(device); + bdev = open_by_devnum(name_to_dev_t(device), FMODE_READ, BDEV_RAW); #endif - maj = MAJOR(rdev); - min = MINOR(rdev); - DEBUG(1, "blkmtd: found a block device major = %d, minor = %d\n", maj, min); - - if(!rdev) { - printk("blkmtd: bad block device: `%s'\n", device); + if (IS_ERR(bdev)){ + printk("blkmtd: error, can't open device %s\n", device); + DEBUG(2, "blkmtd: opening bdev returned %ld\n", PTR_ERR(bdev)); return 1; } - if(maj == MTD_BLOCK_MAJOR) { + DEBUG(1, "blkmtd: devname = %s\n", bdevname(bdev, b)); + + if(MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) { printk("blkmtd: attempting to use an MTD device as a block device\n"); + blkdev_put(bdev, BDEV_RAW); return 1; } - /* get the block device */ - bdev = open_by_devnum(rdev, FMODE_READ, BDEV_RAW); - if (IS_ERR(bdev)) - return 1; - - DEBUG(1, "blkmtd: devname = %s\n", bdevname(bdev, b)); blocksize = BLOCK_SIZE; blocksize = bs ? bs : block_size(bdev); |
