Commit d5686b444ff3f72808d2b3fbd58672a86cdf38e7

Authored by Al Viro
1 parent a95164d979

[PATCH] switch mtd and dm-table to lookup_bdev()

No need to open-code it...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Showing 3 changed files with 18 additions and 45 deletions Side-by-side Diff

drivers/md/dm-table.c
... ... @@ -316,29 +316,12 @@
316 316 */
317 317 static int lookup_device(const char *path, dev_t *dev)
318 318 {
319   - int r;
320   - struct nameidata nd;
321   - struct inode *inode;
322   -
323   - if ((r = path_lookup(path, LOOKUP_FOLLOW, &nd)))
324   - return r;
325   -
326   - inode = nd.path.dentry->d_inode;
327   - if (!inode) {
328   - r = -ENOENT;
329   - goto out;
330   - }
331   -
332   - if (!S_ISBLK(inode->i_mode)) {
333   - r = -ENOTBLK;
334   - goto out;
335   - }
336   -
337   - *dev = inode->i_rdev;
338   -
339   - out:
340   - path_put(&nd.path);
341   - return r;
  319 + struct block_device *bdev = lookup_bdev(path);
  320 + if (IS_ERR(bdev))
  321 + return PTR_ERR(bdev);
  322 + *dev = bdev->bd_dev;
  323 + bdput(bdev);
  324 + return 0;
342 325 }
343 326  
344 327 /*
drivers/mtd/mtdsuper.c
... ... @@ -125,7 +125,7 @@
125 125 int (*fill_super)(struct super_block *, void *, int),
126 126 struct vfsmount *mnt)
127 127 {
128   - struct nameidata nd;
  128 + struct block_device *bdev;
129 129 int mtdnr, ret;
130 130  
131 131 if (!dev_name)
132 132  
133 133  
134 134  
135 135  
... ... @@ -181,29 +181,20 @@
181 181 /* try the old way - the hack where we allowed users to mount
182 182 * /dev/mtdblock$(n) but didn't actually _use_ the blockdev
183 183 */
184   - ret = path_lookup(dev_name, LOOKUP_FOLLOW, &nd);
185   -
186   - DEBUG(1, "MTDSB: path_lookup() returned %d, inode %p\n",
187   - ret, nd.path.dentry ? nd.path.dentry->d_inode : NULL);
188   -
189   - if (ret)
  184 + bdev = lookup_bdev(dev_name);
  185 + if (IS_ERR(bdev)) {
  186 + ret = PTR_ERR(bdev);
  187 + DEBUG(1, "MTDSB: lookup_bdev() returned %d\n", ret);
190 188 return ret;
191   -
192   - ret = -EINVAL;
193   -
194   - if (!S_ISBLK(nd.path.dentry->d_inode->i_mode))
195   - goto out;
196   -
197   - if (nd.path.mnt->mnt_flags & MNT_NODEV) {
198   - ret = -EACCES;
199   - goto out;
200 189 }
  190 + DEBUG(1, "MTDSB: lookup_bdev() returned 0\n");
201 191  
202   - if (imajor(nd.path.dentry->d_inode) != MTD_BLOCK_MAJOR)
  192 + ret = -EINVAL;
  193 + if (MAJOR(bdev->bd_dev) != MTD_BLOCK_MAJOR)
203 194 goto not_an_MTD_device;
204 195  
205   - mtdnr = iminor(nd.path.dentry->d_inode);
206   - path_put(&nd.path);
  196 + mtdnr = MINOR(bdev->bd_dev);
  197 + bdput(bdev);
207 198  
208 199 return get_sb_mtd_nr(fs_type, flags, dev_name, data, mtdnr, fill_super,
209 200 mnt);
210 201  
... ... @@ -213,10 +204,8 @@
213 204 printk(KERN_NOTICE
214 205 "MTD: Attempt to mount non-MTD device \"%s\"\n",
215 206 dev_name);
216   -out:
217   - path_put(&nd.path);
  207 + bdput(bdev);
218 208 return ret;
219   -
220 209 }
221 210  
222 211 EXPORT_SYMBOL_GPL(get_sb_mtd);
... ... @@ -1236,6 +1236,7 @@
1236 1236 bdev = ERR_PTR(error);
1237 1237 goto out;
1238 1238 }
  1239 +EXPORT_SYMBOL(lookup_bdev);
1239 1240  
1240 1241 /**
1241 1242 * open_bdev_excl - open a block device by name and set it up for use