X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffstools.git;a=blobdiff_plain;f=mount_root.c;h=dffb0a6c48ee9d9581baba626359005c956f874d;hp=47a3409dfcd48361dd77dfd40a41b5068b4bb08d;hb=bdeb95a849913bfe2c0eff5d03857c79a4c7d66d;hpb=bf4f08af9b8fe991216023a906182744eb1e4645 diff --git a/mount_root.c b/mount_root.c index 47a3409..dffb0a6 100644 --- a/mount_root.c +++ b/mount_root.c @@ -12,6 +12,9 @@ */ #include +#include +#include +#include #include #include @@ -29,8 +32,9 @@ start(int argc, char *argv[1]) { struct volume *root; struct volume *data = volume_find("rootfs_data"); + struct stat s; - if (!getenv("PREINIT")) + if (!getenv("PREINIT") && stat("/tmp/.preinit", &s)) return -1; if (!data) { @@ -52,6 +56,7 @@ start(int argc, char *argv[1]) } /* There isn't extroot, so just try to mount "rootfs_data" */ + volume_init(data); switch (volume_identify(data)) { case FS_NONE: ULOG_WARN("no usable overlay filesystem found, using tmpfs overlay\n"); @@ -66,9 +71,10 @@ start(int argc, char *argv[1]) ULOG_NOTE("jffs2 not ready yet, using temporary tmpfs overlay\n"); return ramoverlay(); + case FS_EXT4: + case FS_F2FS: case FS_JFFS2: case FS_UBIFS: - case FS_EXT4FS: mount_overlay(data); break; @@ -105,9 +111,10 @@ done(int argc, char *argv[1]) case FS_DEADCODE: return jffs2_switch(v); + case FS_EXT4: + case FS_F2FS: case FS_JFFS2: case FS_UBIFS: - case FS_EXT4FS: fs_state_set("/overlay", FS_STATE_READY); break; }