X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffstools.git;a=blobdiff_plain;f=mount_root.c;h=7b69c7f4612110d4408a1d3b0a84a27ce3fdc455;hp=a8505fabb9aa5de4a32af26936e736e84292cb05;hb=e6004000ff15d7bd32cf5663e8690fc94d7ec747;hpb=35056038c02a7cbd18b57a5f46a373d564c69693 diff --git a/mount_root.c b/mount_root.c index a8505fa..7b69c7f 100644 --- a/mount_root.c +++ b/mount_root.c @@ -15,6 +15,8 @@ #include #include +#include + #include "libfstools/libfstools.h" #include "libfstools/volume.h" @@ -25,17 +27,17 @@ static int start(int argc, char *argv[1]) { - struct volume *v = volume_find("rootfs_data"); + struct volume *root; + struct volume *data = volume_find("rootfs_data"); if (!getenv("PREINIT")) return -1; - if (!v) { - v = volume_find("rootfs"); - volume_init(v); - fprintf(stderr, "mounting /dev/root\n"); + if (!data) { + root = volume_find("rootfs"); + volume_init(root); + ULOG_NOTE("mounting /dev/root\n"); mount("/dev/root", "/", NULL, MS_NOATIME | MS_REMOUNT, 0); - return 0; } /* @@ -45,28 +47,32 @@ start(int argc, char *argv[1]) */ extroot_prefix = ""; if (!mount_extroot()) { - fprintf(stderr, "fs-state: switched to extroot\n"); + ULOG_NOTE("switched to extroot\n"); return 0; } /* There isn't extroot, so just try to mount "rootfs_data" */ - switch (volume_identify(v)) { + switch (volume_identify(data)) { case FS_NONE: + ULOG_WARN("no usable overlay filesystem found, using tmpfs overlay\n"); + return ramoverlay(); + case FS_DEADCODE: /* * Filesystem isn't ready yet and we are in the preinit, so we * can't afford waiting for it. Use tmpfs for now and handle it * properly in the "done" call. */ + ULOG_NOTE("jffs2 not ready yet, using temporary tmpfs overlay\n"); return ramoverlay(); case FS_JFFS2: case FS_UBIFS: - mount_overlay(v); + mount_overlay(data); break; case FS_SNAPSHOT: - mount_snapshot(v); + mount_snapshot(data); break; } @@ -97,6 +103,11 @@ done(int argc, char *argv[1]) case FS_NONE: case FS_DEADCODE: return jffs2_switch(v); + + case FS_JFFS2: + case FS_UBIFS: + fs_state_set("/overlay", FS_STATE_READY); + break; } return 0;