summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2010-12-29 15:38:10 -0800
committerAndroid Code Review <code-review@android.com>2010-12-29 15:38:10 -0800
commitb984d51b0eabdcaf138741a43724c84b7847b05b (patch)
tree1d27bc8a200ccb9c59d11be7253e13bcbf61a45c
parent9770a4ed0981313ff55e249efd40af9fe8691489 (diff)
parent6fc6f4d7459f731ab8cdcc355eed490341ec764a (diff)
downloaddiskinstaller-b984d51b0eabdcaf138741a43724c84b7847b05b.tar.gz
Merge "Add ext4 support"
-rw-r--r--config.mk16
-rw-r--r--installer.c11
-rw-r--r--installer.conf6
-rw-r--r--installer.h1
4 files changed, 26 insertions, 8 deletions
diff --git a/config.mk b/config.mk
index c01d188..6398b27 100644
--- a/config.mk
+++ b/config.mk
@@ -136,6 +136,7 @@ $(installer_tmp_img): $(MKEXT2IMG) $(internal_installerimage_files)
######################################################################
# Now make a data image that contains all the target image files for the
# installer.
+
bootldr_bin := $(PRODUCT_OUT)/grub/grub.bin
installer_target_data_files := \
$(INSTALLED_BOOTIMAGE_TARGET) \
@@ -143,6 +144,17 @@ installer_target_data_files := \
$(INSTALLED_USERDATAIMAGE_TARGET) \
$(bootldr_bin)
+# $(1): src directory
+# $(2): output file
+# $(3): mount point
+# $(4): ext variant (ext2, ext3, ext4)
+# $(5): size of the partition
+define build-installerimage-ext-target
+ @mkdir -p $(dir $(2))
+ $(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$(PATH) \
+ $(MKEXTUSERIMG) $(1) $(2) $(4) $(3) $(5)
+endef
+
installer_data_img := $(TARGET_INSTALLER_OUT)/installer_data.img
$(installer_data_img): $(diskinstaller_root)/config.mk \
$(installer_target_data_files) \
@@ -157,8 +169,8 @@ $(installer_data_img): $(diskinstaller_root)/config.mk \
$(TARGET_INSTALLER_OUT)/data/system.img
cp -f $(INSTALLED_USERDATAIMAGE_TARGET) \
$(TARGET_INSTALLER_OUT)/data/userdata.img
- $(call build-userimage-ext2-target,$(TARGET_INSTALLER_OUT)/data,$@,\
- inst_data,)
+ $(call build-installerimage-ext-target,$(TARGET_INSTALLER_OUT)/data,$@, \
+ inst_data,ext4,$(BOARD_INSTALLERIMAGE_PARTITION_SIZE))
@echo --- Finished installer data image -[ $@ ]-
######################################################################
diff --git a/installer.c b/installer.c
index 357c210..5201452 100644
--- a/installer.c
+++ b/installer.c
@@ -247,7 +247,9 @@ process_image_node(cnode *img, struct disk_info *dinfo, int test)
goto fail;
}
- if (!strcmp(tmp, "ext2"))
+ if (!strcmp(tmp, "ext4"))
+ journal_opts = "";
+ else if (!strcmp(tmp, "ext2"))
journal_opts = "";
else if (!strcmp(tmp, "ext3"))
journal_opts = "-j";
@@ -313,6 +315,8 @@ process_image_node(cnode *img, struct disk_info *dinfo, int test)
type = INSTALL_IMAGE_EXT2;
} else if (!strcmp(tmp, "ext3")) {
type = INSTALL_IMAGE_EXT3;
+ } else if (!strcmp(tmp, "ext4")) {
+ type = INSTALL_IMAGE_EXT4;
} else {
LOGE("Unknown image type '%s' for image %s", tmp, img->name);
goto fail;
@@ -345,6 +349,9 @@ process_image_node(cnode *img, struct disk_info *dinfo, int test)
}
/* ...fall through... */
+ case INSTALL_IMAGE_EXT4:
+ /* fallthru */
+
case INSTALL_IMAGE_EXT2:
if (process_ext2_image(dest_part, filename, flags, test))
goto fail;
@@ -371,7 +378,7 @@ main(int argc, char *argv[])
char *inst_conf_file = "/system/etc/installer.conf";
char *inst_data_dir = "/data";
char *inst_data_dev = NULL;
- char *data_fstype = "ext2";
+ char *data_fstype = "ext4";
cnode *config;
cnode *images;
cnode *img;
diff --git a/installer.conf b/installer.conf
index acdd7a2..96b81e8 100644
--- a/installer.conf
+++ b/installer.conf
@@ -14,15 +14,13 @@ images {
system {
partition system
filename /data/system.img
- type ext2
- flags resize,addjournal
+ type raw
}
data {
partition data
filename /data/userdata.img
- type ext2
- flags resize,addjournal
+ type raw
}
cache {
diff --git a/installer.h b/installer.h
index 98bb2f9..a7108ae 100644
--- a/installer.h
+++ b/installer.h
@@ -24,6 +24,7 @@
#define INSTALL_IMAGE_RAW 1
#define INSTALL_IMAGE_EXT2 2
#define INSTALL_IMAGE_EXT3 3
+#define INSTALL_IMAGE_EXT4 4
#define INSTALL_IMAGE_TARGZ 10