summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--libfstools/ext4.c193
-rw-r--r--libfstools/find.c3
-rw-r--r--libfstools/libfstools.h1
-rw-r--r--libfstools/overlay.c14
-rw-r--r--libfstools/volume.h1
-rw-r--r--mount_root.c2
7 files changed, 1 insertions, 214 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5117e8e..a6002e5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,7 +11,6 @@ ADD_LIBRARY(fstools SHARED
libfstools/overlay.c
libfstools/volume.c
libfstools/mtd.c
- libfstools/ext4.c
libfstools/mount.c
libfstools/ubi.c
libfstools/find.c)
diff --git a/libfstools/ext4.c b/libfstools/ext4.c
deleted file mode 100644
index f648aa8..0000000
--- a/libfstools/ext4.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 2016, The Linux Foundation. All rights reserved.
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-*/
-
-
-#include <sys/mount.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <asm/byteorder.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <mtd/mtd-user.h>
-#include <glob.h>
-
-#include "libfstools.h"
-
-#include "volume.h"
-
-#define ext4_sysfs_path "/sys/block/mmcblk*/mmcblk*/uevent"
-#define MAX_SIZE 128
-
-#define EXT_SB_OFF 0x400
-#define EXT_SB_KBOFF (EXT_SB_OFF >> 10)
-#define EXT_SB_MAGIC "\123\357"
-#define EXT_MAG_OFF 0x38
-
-struct ext4_priv {
- char *name;
- char *devname;
-};
-
-static struct driver ext4_driver;
-
-static int ext4_volume_init(struct volume *v)
-{
- char buf[MAX_SIZE];
- struct ext4_priv *p;
-
- p = (struct ext4_priv*)v->priv;
- snprintf(buf, sizeof(buf), "/dev/%s",p->devname);
-
- v->name = strdup(p->name);
- v->type = EXT4VOLUME;
- v->blk = strdup(buf);
- return 0;
-}
-
-static int
-ext4_part_match(char *dev, char *name, char *filename)
-{
- FILE *fp;
- char buf[MAX_SIZE];
- char devname[MAX_SIZE];
- int i;
- int ret = -1;
-
- fp = fopen(filename, "r");
- if (!fp)
- return ret;
-
- while (fgets(buf, sizeof(buf), fp)) {
- if (strstr(buf, "DEVNAME")) {
- strcpy(devname, buf + strlen("DEVNAME="));
- continue;
- }
- /* Match partition name */
- if (strstr(buf, name)) {
- ret = 0;
- break;
- }
- }
-
- fclose(fp);
-
- /* make sure the string is \0 terminated */
- devname[sizeof(devname) - 1] = '\0';
-
- /* remove trailing whitespace */
- i = strlen(devname) - 1;
- while (i > 0 && devname[i] <= ' ')
- devname[i--] = '\0';
-
- strcpy(dev, devname);
- return ret;
-}
-
-static int ext4_find_devname(char *dev, char *name)
-{
- int i;
- glob_t gl;
-
- if (glob(ext4_sysfs_path, GLOB_NOESCAPE | GLOB_MARK, NULL, &gl) < 0)
- return -1;
-
- for (i = 0; i < gl.gl_pathc; i++) {
- if (!ext4_part_match(dev, name, gl.gl_pathv[i])) {
- globfree(&gl);
- return 0;
- }
- }
-
- globfree(&gl);
- return -1;
-}
-
-static int check_for_mtd(const char *mtd)
-{
- FILE *fp;
- char dev[MAX_SIZE];
-
- if ((fp = fopen("/proc/mtd", "r"))) {
- while (fgets(dev, sizeof(dev), fp)) {
- if (strstr(dev, mtd)) {
- fclose(fp);
- return -1;
- }
- }
- }
- fclose(fp);
- return 0;
-}
-
-static int ext4_volume_find(struct volume *v, char *name)
-{
- char buf[MAX_SIZE];
- struct ext4_priv *p;
-
- if (find_filesystem("ext4"))
- return -1;
-
- if (check_for_mtd(name))
- return -1;
-
- if (ext4_find_devname(buf, name))
- return -1;
-
- p = calloc(1, sizeof(struct ext4_priv));
- if (!p)
- return -1;
-
- v->priv = p;
- v->drv = &ext4_driver;
-
- p->devname = strdup(buf);
- p->name = strdup(name);
- return ext4_volume_init(v);
-}
-
-static int ext4_volume_identify(struct volume *v)
-{
- char magic[32] = { 0 };
- int off = (EXT_SB_KBOFF * 1024) + EXT_MAG_OFF;
- int fd;
-
- fd = open(v->blk, O_RDONLY);
- if (fd == -1)
- return -1;
-
- lseek(fd, off, SEEK_SET);
- read(fd, magic, sizeof(EXT_SB_MAGIC) - 1);
- close(fd);
-
- if (v->type == EXT4VOLUME &&
- !memcmp(EXT_SB_MAGIC, magic, sizeof(EXT_SB_MAGIC) - 1)) {
- return FS_EXT4FS;
- }
-
- ULOG_ERR("ext4 is not ready - marker found\n");
- return FS_DEADCODE;
-}
-
-static struct driver ext4_driver = {
- .name = "ext4",
- .find = ext4_volume_find,
- .init = ext4_volume_init,
- .identify = ext4_volume_identify,
-};
-
-DRIVER(ext4_driver);
diff --git a/libfstools/find.c b/libfstools/find.c
index 9fd83c9..0440052 100644
--- a/libfstools/find.c
+++ b/libfstools/find.c
@@ -102,8 +102,7 @@ find_mount_point(char *block, int mtd_only)
if (mtd_only &&
strncmp(t, "jffs2", 5) &&
- strncmp(t, "ubifs", 5) &&
- strncmp(t, "ext4", 4)) {
+ strncmp(t, "ubifs", 5)) {
fclose(fp);
ULOG_ERR("block is mounted with wrong fs\n");
return NULL;
diff --git a/libfstools/libfstools.h b/libfstools/libfstools.h
index 940c504..31d9f9e 100644
--- a/libfstools/libfstools.h
+++ b/libfstools/libfstools.h
@@ -26,7 +26,6 @@ enum {
FS_JFFS2,
FS_DEADCODE,
FS_UBIFS,
- FS_EXT4FS,
};
enum fs_state {
diff --git a/libfstools/overlay.c b/libfstools/overlay.c
index f8088f9..cdac23e 100644
--- a/libfstools/overlay.c
+++ b/libfstools/overlay.c
@@ -245,16 +245,6 @@ jffs2_switch(struct volume *v)
ret = -1;
}
break;
-
- case FS_EXT4FS:
- ret = overlay_mount(v, "ext4");
- if (ret)
- break;
- if (mount_move("/tmp", "", "/overlay") || fopivot("/overlay", "/rom")) {
- ULOG_ERR("switching to ext4fs failed\n");
- ret = -1;
- }
- break;
}
if (ret)
@@ -280,10 +270,6 @@ static int overlay_mount_fs(struct volume *v)
case FS_UBIFS:
fstype = "ubifs";
break;
-
- case FS_EXT4FS:
- fstype = "ext4";
- break;
}
volume_init(v);
diff --git a/libfstools/volume.h b/libfstools/volume.h
index b74bd50..9c679f7 100644
--- a/libfstools/volume.h
+++ b/libfstools/volume.h
@@ -47,7 +47,6 @@ enum {
NANDFLASH,
NORFLASH,
UBIVOLUME,
- EXT4VOLUME,
};
struct volume {
diff --git a/mount_root.c b/mount_root.c
index 77d683b..d1b6981 100644
--- a/mount_root.c
+++ b/mount_root.c
@@ -70,7 +70,6 @@ start(int argc, char *argv[1])
case FS_JFFS2:
case FS_UBIFS:
- case FS_EXT4FS:
mount_overlay(data);
break;
@@ -109,7 +108,6 @@ done(int argc, char *argv[1])
case FS_JFFS2:
case FS_UBIFS:
- case FS_EXT4FS:
fs_state_set("/overlay", FS_STATE_READY);
break;
}