fstools: added f2fs to block
authorAlberto Bursi <alberto.bursi@outlook.it>
Thu, 27 Oct 2016 20:59:27 +0000 (20:59 +0000)
committerJohn Crispin <john@phrozen.org>
Mon, 31 Oct 2016 15:36:17 +0000 (16:36 +0100)
added code to block so it can recognize and operate the filesystem checker of f2fs
added f2fs to the filesystem whitelist of block so it can mount it on
/overlay at boot.

Signed-off-by: Alberto Bursi <alberto.bursi@outlook.it>
block.c

diff --git a/block.c b/block.c
index 24becef72bac9ced513cb85ad954b3095b0a6aca..05f84aac9e2d2dcdfd26cfbbbf87d7e41cfbb895 100644 (file)
--- a/block.c
+++ b/block.c
@@ -690,6 +690,7 @@ static void check_filesystem(struct probe_info *pr)
        pid_t pid;
        struct stat statbuf;
        const char *e2fsck = "/usr/sbin/e2fsck";
+       const char *f2fsck = "/usr/sbin/fsck.f2fs";
        const char *dosfsck = "/usr/sbin/dosfsck";
        const char *ckfs;
 
@@ -699,6 +700,8 @@ static void check_filesystem(struct probe_info *pr)
 
        if (!strncmp(pr->type, "vfat", 4)) {
                ckfs = dosfsck;
+       } else if (!strncmp(pr->type, "f2fs", 4)) {
+               ckfs = f2fsck;
        } else if (!strncmp(pr->type, "ext", 3)) {
                ckfs = e2fsck;
        } else {
@@ -713,8 +716,13 @@ static void check_filesystem(struct probe_info *pr)
 
        pid = fork();
        if (!pid) {
-               execl(ckfs, ckfs, "-p", pr->dev, NULL);
-               exit(-1);
+               if(!strncmp(pr->type, "f2fs", 4)) {
+                       execl(ckfs, ckfs, "-f", pr->dev, NULL);
+                       exit(-1);
+               } else {
+                       execl(ckfs, ckfs, "-p", pr->dev, NULL);
+                       exit(-1);
+               }
        } else if (pid > 0) {
                int status;
 
@@ -1293,8 +1301,9 @@ static int mount_extroot(char *cfg)
        }
        if (pr) {
                if (strncmp(pr->type, "ext", 3) &&
+                   strncmp(pr->type, "f2fs", 4) &&
                    strncmp(pr->type, "ubifs", 5)) {
-                       ULOG_ERR("extroot: unsupported filesystem %s, try ext4\n", pr->type);
+                       ULOG_ERR("extroot: unsupported filesystem %s, try ext4, f2fs or ubifs\n", pr->type);
                        return -1;
                }