Manually merge commit 'b406ffa' into stage-aosp-master

* commit 'b406ffa':
  Add support for creating ext4 images with mke2fs

BUG:33304034
gugelfrei
The Android Automerger 8 years ago
commit 04c55e6ed7

@ -71,6 +71,16 @@ common_static_libraries := \
vold_conlyflags := -std=c11
vold_cflags := -Werror -Wall -Wno-missing-field-initializers -Wno-unused-variable -Wno-unused-parameter
required_modules :=
ifeq ($(TARGET_USERIMAGES_USE_EXT4), true)
ifeq ($(TARGET_USES_MKE2FS), true)
vold_cflags += -DTARGET_USES_MKE2FS
required_modules += mke2fs
else
required_modules += make_ext4fs
endif
endif
include $(CLEAR_VARS)
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
@ -83,6 +93,7 @@ LOCAL_STATIC_LIBRARIES := $(common_static_libraries)
LOCAL_MODULE_TAGS := eng tests
LOCAL_CFLAGS := $(vold_cflags)
LOCAL_CONLYFLAGS := $(vold_conlyflags)
LOCAL_REQUIRED_MODULES := $(required_modules)
include $(BUILD_STATIC_LIBRARY)
@ -109,6 +120,7 @@ endif
LOCAL_SHARED_LIBRARIES := $(common_shared_libraries)
LOCAL_STATIC_LIBRARIES := $(common_static_libraries)
LOCAL_REQUIRED_MODULES := $(required_modules)
include $(BUILD_EXECUTABLE)

@ -2185,6 +2185,19 @@ static int cryptfs_enable_wipe(char *crypto_blkdev, off64_t size, int type)
int rc = -1;
if (type == EXT4_FS) {
#ifdef TARGET_USES_MKE2FS
args[0] = "/system/bin/mke2fs";
args[1] = "-M";
args[2] = "/data";
args[3] = "-b";
args[4] = "4096";
args[5] = "-t";
args[6] = "ext4";
args[7] = crypto_blkdev;
snprintf(size_str, sizeof(size_str), "%" PRId64, size / (4096 / 512));
args[8] = size_str;
num_args = 9;
#else
args[0] = "/system/bin/make_ext4fs";
args[1] = "-a";
args[2] = "/data";
@ -2193,6 +2206,7 @@ static int cryptfs_enable_wipe(char *crypto_blkdev, off64_t size, int type)
args[4] = size_str;
args[5] = crypto_blkdev;
num_args = 6;
#endif
SLOGI("Making empty filesystem with command %s %s %s %s %s %s\n",
args[0], args[1], args[2], args[3], args[4], args[5]);
} else if (type == F2FS_FS) {

@ -55,7 +55,11 @@ namespace vold {
namespace ext4 {
static const char* kResizefsPath = "/system/bin/resize2fs";
#ifdef TARGET_USES_MKE2FS
static const char* kMkfsPath = "/system/bin/mke2fs";
#else
static const char* kMkfsPath = "/system/bin/make_ext4fs";
#endif
static const char* kFsckPath = "/system/bin/e2fsck";
bool IsSupported() {
@ -165,6 +169,25 @@ status_t Format(const std::string& source, unsigned long numSectors,
const std::string& target) {
std::vector<std::string> cmd;
cmd.push_back(kMkfsPath);
#ifdef TARGET_USES_MKE2FS
cmd.push_back("-b");
cmd.push_back("4096");
cmd.push_back("-t");
cmd.push_back("ext4");
cmd.push_back("-M");
cmd.push_back(target);
cmd.push_back("-O");
cmd.push_back("^has_journal");
cmd.push_back(source);
if (numSectors)
cmd.push_back(StringPrintf("%lu", numSectors * (4096 / 512)));
#else
cmd.push_back("-J");
cmd.push_back("-a");
@ -178,6 +201,7 @@ status_t Format(const std::string& source, unsigned long numSectors,
// Always generate a real UUID
cmd.push_back("-u");
cmd.push_back(source);
#endif
return ForkExecvp(cmd);
}

Loading…
Cancel
Save