From eea9e1785e4c05c2a3444506aabafa0ae958538f Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sat, 17 May 2014 03:35:02 +0200 Subject: [PATCH 4/5] try auto-mounting ubi0:rootfs in init/do_mounts.c To: openwrt-devel@lists.openwrt.org Signed-off-by: Daniel Golle --- init/do_mounts.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) --- a/init/do_mounts.c +++ b/init/do_mounts.c @@ -433,7 +433,28 @@ retry: out: put_page(page); } - + +static int __init mount_ubi_rootfs(void) +{ + int flags = MS_SILENT; + int err, tried = 0; + + while (tried < 2) { + err = do_mount_root("ubi0:rootfs", "ubifs", flags, \ + root_mount_data); + switch (err) { + case -EACCES: + flags |= MS_RDONLY; + tried++; + break; + default: + return err; + } + } + + return -EINVAL; +} + #ifdef CONFIG_ROOT_NFS #define NFSROOT_TIMEOUT_MIN 5 @@ -527,6 +547,10 @@ void __init mount_root(void) change_floppy("root floppy"); } #endif +#ifdef CONFIG_MTD_ROOTFS_ROOT_DEV + if (!mount_ubi_rootfs()) + return; +#endif #ifdef CONFIG_BLOCK create_dev("/dev/root", ROOT_DEV); mount_block_root("/dev/root", root_mountflags);