acbcd5f5b5
Similar to the rootfs hacks on NOR flash devices, this series introduces support for auto-attaching (ubi device), auto-creating (ubiblock device) and mounting the "rootfs" (ubifs or squashfs) volume. This is needed so OpenWrt can start without relying on the bootloader to pass the ubi.mtd, ubi.block, rootfs and rootfstype parameters, but instead auto-detect the root filesystem according to a simple convention. OpenWrt-specific: 490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch 491-ubi-auto-create-ubiblock-device-for-rootfs.patch 492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch 493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch sent upstream: 552-ubifs-respect-silent-mount-flag.patch http://lists.infradead.org/pipermail/linux-mtd/2014-May/053893.html v2: actually retry with MS_RDONLY when mounting read-only ubifs root Signed-off-by: Daniel Golle <daniel@makrotopia.org> SVN-Revision: 41119
68 lines
1.9 KiB
Diff
68 lines
1.9 KiB
Diff
From 8a52e4100d7c3a4a1dfddfa02b8864a9b0068c13 Mon Sep 17 00:00:00 2001
|
|
From: Daniel Golle <daniel@makrotopia.org>
|
|
Date: Sat, 17 May 2014 03:36:18 +0200
|
|
Subject: [PATCH 1/5] ubi: auto-attach mtd device named "ubi" or "data" on boot
|
|
To: openwrt-devel@lists.openwrt.org
|
|
|
|
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
---
|
|
drivers/mtd/ubi/build.c | 36 ++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 36 insertions(+)
|
|
|
|
diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
|
|
index 6e30a3c..999a36b 100644
|
|
--- a/drivers/mtd/ubi/build.c
|
|
+++ b/drivers/mtd/ubi/build.c
|
|
@@ -1209,6 +1209,36 @@ static struct mtd_info * __init open_mtd_device(const char *mtd_dev)
|
|
return mtd;
|
|
}
|
|
|
|
+/*
|
|
+ * This function tries attaching mtd partitions named either "ubi" or "data"
|
|
+ * during boot.
|
|
+ */
|
|
+static void __init ubi_auto_attach(void)
|
|
+{
|
|
+ int err;
|
|
+ struct mtd_info *mtd;
|
|
+ /* try attaching mtd device named "ubi" or "data" */
|
|
+ mtd = open_mtd_device("ubi");
|
|
+ if (IS_ERR(mtd))
|
|
+ mtd = open_mtd_device("data");
|
|
+
|
|
+ if (!IS_ERR(mtd)) {
|
|
+ /* auto-add only media types where UBI makes sense */
|
|
+ if (mtd->type == MTD_NANDFLASH ||
|
|
+ mtd->type == MTD_DATAFLASH ||
|
|
+ mtd->type == MTD_MLCNANDFLASH) {
|
|
+ mutex_lock(&ubi_devices_mutex);
|
|
+ ubi_msg("auto-attach mtd%d", mtd->index);
|
|
+ err = ubi_attach_mtd_dev(mtd, UBI_DEV_NUM_AUTO, 0, 0);
|
|
+ mutex_unlock(&ubi_devices_mutex);
|
|
+ if (err < 0) {
|
|
+ ubi_err("cannot attach mtd%d", mtd->index);
|
|
+ put_mtd_device(mtd);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
static int __init ubi_init(void)
|
|
{
|
|
int err, i, k;
|
|
@@ -1298,6 +1328,12 @@ static int __init ubi_init(void)
|
|
}
|
|
}
|
|
|
|
+ /* auto-attach mtd devices only if built-in to the kernel and no ubi.mtd
|
|
+ * parameter was given */
|
|
+ if (config_enabled(CONFIG_MTD_ROOTFS_ROOT_DEV) &&
|
|
+ !ubi_is_module() && !mtd_devs)
|
|
+ ubi_auto_attach();
|
|
+
|
|
err = ubiblock_init();
|
|
if (err) {
|
|
ubi_err("block: cannot initialize, error %d", err);
|
|
--
|
|
1.9.2
|
|
|