Snap for 4496165 from 7153b24dd7 to pi-release
Change-Id: Ic6144b00578f90e289d3900fad18dd3d7f45624d
This commit is contained in:
+1
-1
@@ -89,7 +89,7 @@ LOCAL_REQUIRED_MODULES := e2fsdroid_static mke2fs_static mke2fs.conf
|
||||
|
||||
ifeq ($(TARGET_USERIMAGES_USE_F2FS),true)
|
||||
ifeq ($(HOST_OS),linux)
|
||||
LOCAL_REQUIRED_MODULES += mkfs.f2fs
|
||||
LOCAL_REQUIRED_MODULES += sload.f2fs mkfs.f2fs
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
@@ -58,12 +58,13 @@ int LoadFileContents(const char* filename, FileContents* file) {
|
||||
return LoadPartitionContents(filename, file);
|
||||
}
|
||||
|
||||
if (stat(filename, &file->st) == -1) {
|
||||
struct stat sb;
|
||||
if (stat(filename, &sb) == -1) {
|
||||
printf("failed to stat \"%s\": %s\n", filename, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
std::vector<unsigned char> data(file->st.st_size);
|
||||
std::vector<unsigned char> data(sb.st_size);
|
||||
unique_file f(ota_fopen(filename, "rb"));
|
||||
if (!f) {
|
||||
printf("failed to open \"%s\": %s\n", filename, strerror(errno));
|
||||
@@ -180,10 +181,6 @@ static int LoadPartitionContents(const std::string& filename, FileContents* file
|
||||
|
||||
buffer.resize(buffer_size);
|
||||
file->data = std::move(buffer);
|
||||
// Fake some stat() info.
|
||||
file->st.st_mode = 0644;
|
||||
file->st.st_uid = 0;
|
||||
file->st.st_gid = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -212,15 +209,6 @@ int SaveFileContents(const char* filename, const FileContents* file) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (chmod(filename, file->st.st_mode) != 0) {
|
||||
printf("chmod of \"%s\" failed: %s\n", filename, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
if (chown(filename, file->st.st_uid, file->st.st_gid) != 0) {
|
||||
printf("chown of \"%s\" failed: %s\n", filename, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#define _APPLYPATCH_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
@@ -33,7 +32,6 @@ struct Value;
|
||||
struct FileContents {
|
||||
uint8_t sha1[SHA_DIGEST_LENGTH];
|
||||
std::vector<unsigned char> data;
|
||||
struct stat st;
|
||||
};
|
||||
|
||||
// When there isn't enough room on the target filesystem to hold the patched version of the file,
|
||||
|
||||
@@ -11,6 +11,7 @@ on init
|
||||
export ANDROID_DATA /data
|
||||
export EXTERNAL_STORAGE /sdcard
|
||||
|
||||
symlink /system/bin /bin
|
||||
symlink /system/etc /etc
|
||||
|
||||
mount cgroup none /acct cpuacct
|
||||
|
||||
@@ -324,16 +324,23 @@ int format_volume(const char* volume, const char* directory) {
|
||||
}
|
||||
|
||||
// Has to be f2fs because we checked earlier.
|
||||
std::vector<std::string> f2fs_args = { "/sbin/mkfs.f2fs", "-d1", "-f",
|
||||
"-O", "encrypt", "-O", "quota",
|
||||
v->blk_device };
|
||||
std::string cmd("/sbin/mkfs.f2fs");
|
||||
std::vector<std::string> make_f2fs_cmd = { cmd, "-d1", "-f", "-O",
|
||||
"encrypt", "-O", "quota", v->blk_device };
|
||||
if (length >= 512) {
|
||||
f2fs_args.push_back(std::to_string(length / 512));
|
||||
make_f2fs_cmd.push_back(std::to_string(length / 512));
|
||||
}
|
||||
|
||||
int result = exec_cmd(f2fs_args);
|
||||
int result = exec_cmd(make_f2fs_cmd);
|
||||
if (result == 0 && directory != nullptr) {
|
||||
cmd = "/sbin/sload.f2fs";
|
||||
std::vector<std::string> sload_f2fs_cmd = {
|
||||
cmd, "-f", directory, "-t", volume, v->blk_device,
|
||||
};
|
||||
result = exec_cmd(sload_f2fs_cmd);
|
||||
}
|
||||
if (result != 0) {
|
||||
PLOG(ERROR) << "format_volume: Failed to make f2fs on " << v->blk_device;
|
||||
PLOG(ERROR) << "format_volume: Failed " << cmd << " on " << v->blk_device;
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
@@ -318,6 +318,15 @@ Value* FormatFn(const char* name, State* state, const std::vector<std::unique_pt
|
||||
LOG(ERROR) << name << ": mkfs.f2fs failed (" << status << ") on " << location;
|
||||
return StringValue("");
|
||||
}
|
||||
|
||||
const char* sload_argv[] = { "/sbin/sload.f2fs", "-t", mount_point.c_str(), location.c_str(),
|
||||
nullptr };
|
||||
status = exec_cmd(sload_argv[0], const_cast<char**>(sload_argv));
|
||||
if (status != 0) {
|
||||
LOG(ERROR) << name << ": sload.f2fs failed (" << status << ") on " << location;
|
||||
return StringValue("");
|
||||
}
|
||||
|
||||
return StringValue(location);
|
||||
} else {
|
||||
LOG(ERROR) << name << ": unsupported fs_type \"" << fs_type << "\" partition_type \""
|
||||
|
||||
Reference in New Issue
Block a user