[PATCH v6] block: support mtd:<name> syntax for block devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This enables mounting, like JFFS2, MTD devices by "label":
   mount -t squashfs mtd:appfs /tmp
and cmdline argument:
   root=mtd:rootfs

where mtd:appfs comes from:
 # >  cat /proc/mtd
dev:    size   erasesize  name
 ...
mtd22: 00750000 00010000 "appfs"

Signed-off-by: Joakim Tjernlund <joakim.tjernlund@xxxxxxxxxxxx>
---

 - kernel test bot found white space issues, fix these.
 block/bdev.c | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/block/bdev.c b/block/bdev.c
index 889ec6e002d7..0e53ce99481b 100644
--- a/block/bdev.c
+++ b/block/bdev.c
@@ -17,6 +17,7 @@
 #include <linux/module.h>
 #include <linux/blkpg.h>
 #include <linux/magic.h>
+#include <linux/mtd/mtd.h>
 #include <linux/buffer_head.h>
 #include <linux/swap.h>
 #include <linux/writeback.h>
@@ -1075,9 +1076,23 @@ struct file *bdev_file_open_by_path(const char *path, blk_mode_t mode,
 	dev_t dev;
 	int error;
 
-	error = lookup_bdev(path, &dev);
-	if (error)
-		return ERR_PTR(error);
+#ifdef CONFIG_MTD_BLOCK
+	if (!strncmp(path, "mtd:", 4)) {
+		struct mtd_info *mtd;
+
+		/* mount by MTD device name */
+		pr_debug("path name \"%s\"\n", path);
+		mtd = get_mtd_device_nm(path + 4);
+		if (IS_ERR(mtd))
+			return ERR_PTR(-EINVAL);
+		dev = MKDEV(MTD_BLOCK_MAJOR, mtd->index);
+	} else
+#endif
+	{
+		error = lookup_bdev(path, &dev);
+		if (error)
+			return ERR_PTR(error);
+	}
 
 	file = bdev_file_open_by_dev(dev, mode, holder, hops);
 	if (!IS_ERR(file) && (mode & BLK_OPEN_WRITE)) {
-- 
2.49.0





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux