Merge "support f2fs device aliasing feature" into main
This commit is contained in:
commit
d7b46e396d
4 changed files with 18 additions and 6 deletions
|
|
@ -1603,7 +1603,8 @@ int fs_mgr_mount_all(Fstab* fstab, int mount_mode) {
|
||||||
attempted_entry.fs_type,
|
attempted_entry.fs_type,
|
||||||
attempted_entry.fs_mgr_flags.is_zoned ? "true" : "false",
|
attempted_entry.fs_mgr_flags.is_zoned ? "true" : "false",
|
||||||
std::to_string(attempted_entry.length),
|
std::to_string(attempted_entry.length),
|
||||||
android::base::Join(attempted_entry.user_devices, ' ')},
|
android::base::Join(attempted_entry.user_devices, ' '),
|
||||||
|
android::base::Join(attempted_entry.device_aliased, ' ')},
|
||||||
nullptr)) {
|
nullptr)) {
|
||||||
LERROR << "Encryption failed";
|
LERROR << "Encryption failed";
|
||||||
set_type_property(encryptable);
|
set_type_property(encryptable);
|
||||||
|
|
@ -1655,7 +1656,8 @@ int fs_mgr_mount_all(Fstab* fstab, int mount_mode) {
|
||||||
formattable_entry->fs_type,
|
formattable_entry->fs_type,
|
||||||
formattable_entry->fs_mgr_flags.is_zoned ? "true" : "false",
|
formattable_entry->fs_mgr_flags.is_zoned ? "true" : "false",
|
||||||
std::to_string(formattable_entry->length),
|
std::to_string(formattable_entry->length),
|
||||||
android::base::Join(formattable_entry->user_devices, ' ')},
|
android::base::Join(formattable_entry->user_devices, ' '),
|
||||||
|
android::base::Join(formattable_entry->device_aliased, ' ')},
|
||||||
nullptr)) {
|
nullptr)) {
|
||||||
LERROR << "Encryption failed";
|
LERROR << "Encryption failed";
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@
|
||||||
#include <selinux/android.h>
|
#include <selinux/android.h>
|
||||||
#include <selinux/label.h>
|
#include <selinux/label.h>
|
||||||
#include <selinux/selinux.h>
|
#include <selinux/selinux.h>
|
||||||
|
#include <filesystem>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "fs_mgr_priv.h"
|
#include "fs_mgr_priv.h"
|
||||||
|
|
@ -126,7 +127,8 @@ static int format_ext4(const std::string& fs_blkdev, const std::string& fs_mnt_p
|
||||||
|
|
||||||
static int format_f2fs(const std::string& fs_blkdev, uint64_t dev_sz, bool needs_projid,
|
static int format_f2fs(const std::string& fs_blkdev, uint64_t dev_sz, bool needs_projid,
|
||||||
bool needs_casefold, bool fs_compress, bool is_zoned,
|
bool needs_casefold, bool fs_compress, bool is_zoned,
|
||||||
const std::vector<std::string>& user_devices) {
|
const std::vector<std::string>& user_devices,
|
||||||
|
const std::vector<int>& device_aliased) {
|
||||||
if (!dev_sz) {
|
if (!dev_sz) {
|
||||||
int rc = get_dev_sz(fs_blkdev, &dev_sz);
|
int rc = get_dev_sz(fs_blkdev, &dev_sz);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
|
|
@ -164,9 +166,15 @@ static int format_f2fs(const std::string& fs_blkdev, uint64_t dev_sz, bool needs
|
||||||
if (is_zoned) {
|
if (is_zoned) {
|
||||||
args.push_back("-m");
|
args.push_back("-m");
|
||||||
}
|
}
|
||||||
for (auto& device : user_devices) {
|
for (size_t i = 0; i < user_devices.size(); i++) {
|
||||||
|
std::string device_name = user_devices[i];
|
||||||
|
|
||||||
args.push_back("-c");
|
args.push_back("-c");
|
||||||
args.push_back(device.c_str());
|
if (device_aliased[i]) {
|
||||||
|
std::filesystem::path path = device_name;
|
||||||
|
device_name += "@" + path.filename().string();
|
||||||
|
}
|
||||||
|
args.push_back(device_name.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user_devices.empty()) {
|
if (user_devices.empty()) {
|
||||||
|
|
@ -191,7 +199,7 @@ int fs_mgr_do_format(const FstabEntry& entry) {
|
||||||
if (entry.fs_type == "f2fs") {
|
if (entry.fs_type == "f2fs") {
|
||||||
return format_f2fs(entry.blk_device, entry.length, needs_projid, needs_casefold,
|
return format_f2fs(entry.blk_device, entry.length, needs_projid, needs_casefold,
|
||||||
entry.fs_mgr_flags.fs_compress, entry.fs_mgr_flags.is_zoned,
|
entry.fs_mgr_flags.fs_compress, entry.fs_mgr_flags.is_zoned,
|
||||||
entry.user_devices);
|
entry.user_devices, entry.device_aliased);
|
||||||
} else if (entry.fs_type == "ext4") {
|
} else if (entry.fs_type == "ext4") {
|
||||||
return format_ext4(entry.blk_device, entry.mount_point, needs_projid,
|
return format_ext4(entry.blk_device, entry.mount_point, needs_projid,
|
||||||
entry.fs_mgr_flags.ext_meta_csum);
|
entry.fs_mgr_flags.ext_meta_csum);
|
||||||
|
|
|
||||||
|
|
@ -173,6 +173,7 @@ void ParseUserDevices(const std::string& arg, FstabEntry* entry) {
|
||||||
entry->fs_mgr_flags.is_zoned = true;
|
entry->fs_mgr_flags.is_zoned = true;
|
||||||
}
|
}
|
||||||
entry->user_devices.push_back(param[1]);
|
entry->user_devices.push_back(param[1]);
|
||||||
|
entry->device_aliased.push_back(param[0] == "exp_alias" ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ParseFsMgrFlags(const std::string& flags, FstabEntry* entry) {
|
bool ParseFsMgrFlags(const std::string& flags, FstabEntry* entry) {
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ namespace fs_mgr {
|
||||||
struct FstabEntry {
|
struct FstabEntry {
|
||||||
std::string blk_device;
|
std::string blk_device;
|
||||||
std::vector<std::string> user_devices;
|
std::vector<std::string> user_devices;
|
||||||
|
std::vector<int> device_aliased;
|
||||||
std::string logical_partition_name;
|
std::string logical_partition_name;
|
||||||
std::string mount_point;
|
std::string mount_point;
|
||||||
std::string fs_type;
|
std::string fs_type;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue