Loading fs_mgr/fs_mgr.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -1485,7 +1485,7 @@ MountAllResult fs_mgr_mount_all(Fstab* fstab, int mount_mode) { if (status == FS_MGR_MNTALL_DEV_NEEDS_METADATA_ENCRYPTION) { if (!call_vdc({"cryptfs", "encryptFstab", attempted_entry.blk_device, attempted_entry.mount_point, wiped ? "true" : "false", attempted_entry.fs_type}, attempted_entry.fs_type, attempted_entry.zoned_device}, nullptr)) { LERROR << "Encryption failed"; set_type_property(encryptable); Loading Loading @@ -1525,7 +1525,7 @@ MountAllResult fs_mgr_mount_all(Fstab* fstab, int mount_mode) { if (!call_vdc({"cryptfs", "encryptFstab", current_entry.blk_device, current_entry.mount_point, "true" /* shouldFormat */, current_entry.fs_type}, current_entry.fs_type, current_entry.zoned_device}, nullptr)) { LERROR << "Encryption failed"; } else { Loading @@ -1550,7 +1550,7 @@ MountAllResult fs_mgr_mount_all(Fstab* fstab, int mount_mode) { if (mount_errno != EBUSY && mount_errno != EACCES && should_use_metadata_encryption(attempted_entry)) { if (!call_vdc({"cryptfs", "mountFstab", attempted_entry.blk_device, attempted_entry.mount_point}, attempted_entry.mount_point, attempted_entry.zoned_device}, nullptr)) { ++error_count; } else if (current_entry.mount_point == "/data") { Loading fs_mgr/fs_mgr_format.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -117,7 +117,7 @@ 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, bool needs_casefold, bool fs_compress) { bool needs_casefold, bool fs_compress, const std::string& zoned_device) { if (!dev_sz) { int rc = get_dev_sz(fs_blkdev, &dev_sz); if (rc) { Loading Loading @@ -146,8 +146,15 @@ static int format_f2fs(const std::string& fs_blkdev, uint64_t dev_sz, bool needs args.push_back("-O"); args.push_back("extra_attr"); } if (!zoned_device.empty()) { args.push_back("-c"); args.push_back(zoned_device.c_str()); args.push_back("-m"); args.push_back(fs_blkdev.c_str()); } else { args.push_back(fs_blkdev.c_str()); args.push_back(size_str.c_str()); } return logwrap_fork_execvp(args.size(), args.data(), nullptr, false, LOG_KLOG, false, nullptr); } Loading @@ -164,7 +171,7 @@ int fs_mgr_do_format(const FstabEntry& entry) { if (entry.fs_type == "f2fs") { return format_f2fs(entry.blk_device, entry.length, needs_projid, needs_casefold, entry.fs_mgr_flags.fs_compress); entry.fs_mgr_flags.fs_compress, entry.zoned_device); } else if (entry.fs_type == "ext4") { return format_ext4(entry.blk_device, entry.mount_point, needs_projid, entry.fs_mgr_flags.ext_meta_csum); Loading fs_mgr/fs_mgr_fstab.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -304,6 +304,14 @@ bool ParseFsMgrFlags(const std::string& flags, FstabEntry* entry) { if (!ParseByteCount(arg, &entry->zram_backingdev_size)) { LWARNING << "Warning: zram_backingdev_size= flag malformed: " << arg; } } else if (StartsWith(flag, "zoned_device=")) { std::string zoned; if (ReadFileToString("/sys/class/block/" + arg + "/queue/zoned", &zoned) && android::base::StartsWith(zoned, "host-managed")) { entry->zoned_device = "/dev/block/" + arg; } else { LWARNING << "Warning: cannot find the zoned device: " << arg; } } else { LWARNING << "Warning: unknown flag: " << flag; } Loading fs_mgr/include_fstab/fstab/fstab.h +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ namespace fs_mgr { struct FstabEntry { std::string blk_device; std::string zoned_device; std::string logical_partition_name; std::string mount_point; std::string fs_type; Loading Loading
fs_mgr/fs_mgr.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -1485,7 +1485,7 @@ MountAllResult fs_mgr_mount_all(Fstab* fstab, int mount_mode) { if (status == FS_MGR_MNTALL_DEV_NEEDS_METADATA_ENCRYPTION) { if (!call_vdc({"cryptfs", "encryptFstab", attempted_entry.blk_device, attempted_entry.mount_point, wiped ? "true" : "false", attempted_entry.fs_type}, attempted_entry.fs_type, attempted_entry.zoned_device}, nullptr)) { LERROR << "Encryption failed"; set_type_property(encryptable); Loading Loading @@ -1525,7 +1525,7 @@ MountAllResult fs_mgr_mount_all(Fstab* fstab, int mount_mode) { if (!call_vdc({"cryptfs", "encryptFstab", current_entry.blk_device, current_entry.mount_point, "true" /* shouldFormat */, current_entry.fs_type}, current_entry.fs_type, current_entry.zoned_device}, nullptr)) { LERROR << "Encryption failed"; } else { Loading @@ -1550,7 +1550,7 @@ MountAllResult fs_mgr_mount_all(Fstab* fstab, int mount_mode) { if (mount_errno != EBUSY && mount_errno != EACCES && should_use_metadata_encryption(attempted_entry)) { if (!call_vdc({"cryptfs", "mountFstab", attempted_entry.blk_device, attempted_entry.mount_point}, attempted_entry.mount_point, attempted_entry.zoned_device}, nullptr)) { ++error_count; } else if (current_entry.mount_point == "/data") { Loading
fs_mgr/fs_mgr_format.cpp +11 −4 Original line number Diff line number Diff line Loading @@ -117,7 +117,7 @@ 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, bool needs_casefold, bool fs_compress) { bool needs_casefold, bool fs_compress, const std::string& zoned_device) { if (!dev_sz) { int rc = get_dev_sz(fs_blkdev, &dev_sz); if (rc) { Loading Loading @@ -146,8 +146,15 @@ static int format_f2fs(const std::string& fs_blkdev, uint64_t dev_sz, bool needs args.push_back("-O"); args.push_back("extra_attr"); } if (!zoned_device.empty()) { args.push_back("-c"); args.push_back(zoned_device.c_str()); args.push_back("-m"); args.push_back(fs_blkdev.c_str()); } else { args.push_back(fs_blkdev.c_str()); args.push_back(size_str.c_str()); } return logwrap_fork_execvp(args.size(), args.data(), nullptr, false, LOG_KLOG, false, nullptr); } Loading @@ -164,7 +171,7 @@ int fs_mgr_do_format(const FstabEntry& entry) { if (entry.fs_type == "f2fs") { return format_f2fs(entry.blk_device, entry.length, needs_projid, needs_casefold, entry.fs_mgr_flags.fs_compress); entry.fs_mgr_flags.fs_compress, entry.zoned_device); } else if (entry.fs_type == "ext4") { return format_ext4(entry.blk_device, entry.mount_point, needs_projid, entry.fs_mgr_flags.ext_meta_csum); Loading
fs_mgr/fs_mgr_fstab.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -304,6 +304,14 @@ bool ParseFsMgrFlags(const std::string& flags, FstabEntry* entry) { if (!ParseByteCount(arg, &entry->zram_backingdev_size)) { LWARNING << "Warning: zram_backingdev_size= flag malformed: " << arg; } } else if (StartsWith(flag, "zoned_device=")) { std::string zoned; if (ReadFileToString("/sys/class/block/" + arg + "/queue/zoned", &zoned) && android::base::StartsWith(zoned, "host-managed")) { entry->zoned_device = "/dev/block/" + arg; } else { LWARNING << "Warning: cannot find the zoned device: " << arg; } } else { LWARNING << "Warning: unknown flag: " << flag; } Loading
fs_mgr/include_fstab/fstab/fstab.h +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ namespace fs_mgr { struct FstabEntry { std::string blk_device; std::string zoned_device; std::string logical_partition_name; std::string mount_point; std::string fs_type; Loading