X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffstools.git;a=blobdiff_plain;f=mount_root.c;h=dffb0a6c48ee9d9581baba626359005c956f874d;hp=77d683ba30bc028fd4c22c971181ecc6988226da;hb=refs%2Fheads%2Flede-17.01;hpb=09f8e0097fe1370700658542e7bda831c31de4bf diff --git a/mount_root.c b/mount_root.c index 77d683b..dffb0a6 100644 --- a/mount_root.c +++ b/mount_root.c @@ -12,6 +12,9 @@ */ #include +#include +#include +#include #include #include @@ -27,16 +30,15 @@ static int start(int argc, char *argv[1]) { - struct volume *root = volume_find("rootfs"); + struct volume *root; struct volume *data = volume_find("rootfs_data"); + struct stat s; - if (data && find_mount_point(data->blk, 0)) - return -1; - - if (root && find_mount_point(root->blk, 0)) + if (!getenv("PREINIT") && stat("/tmp/.preinit", &s)) return -1; if (!data) { + root = volume_find("rootfs"); volume_init(root); ULOG_NOTE("mounting /dev/root\n"); mount("/dev/root", "/", NULL, MS_NOATIME | MS_REMOUNT, 0); @@ -54,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"); @@ -68,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; @@ -107,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; }