| From: Daniel Golle <daniel@makrotopia.org> |
| Subject: try auto-mounting ubi0:rootfs in init/do_mounts.c |
| |
| Signed-off-by: Daniel Golle <daniel@makrotopia.org> |
| --- |
| init/do_mounts.c | 26 +++++++++++++++++++++++++- |
| 1 file changed, 25 insertions(+), 1 deletion(-) |
| |
| --- a/init/do_mounts.c |
| +++ b/init/do_mounts.c |
| @@ -460,7 +460,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 |
| @@ -554,6 +575,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 |
| { |
| int err = create_dev("/dev/root", ROOT_DEV); |