diff options
author | Tom Cherry <tomcherry@google.com> | 2019-02-04 13:33:32 -0800 |
---|---|---|
committer | Tom Cherry <tomcherry@google.com> | 2019-02-04 15:09:02 -0800 |
commit | 685c2c7b1e36f4784248d7c9fd2f95e8595cfd2f (patch) | |
tree | d3040a0c6a72c255dd1b85b85a5d40b8f232f287 /fs_mgr | |
parent | faa6c4894d76a4b173f2161bcd22603489331545 (diff) | |
download | system_core-685c2c7b1e36f4784248d7c9fd2f95e8595cfd2f.tar.gz system_core-685c2c7b1e36f4784248d7c9fd2f95e8595cfd2f.tar.bz2 system_core-685c2c7b1e36f4784248d7c9fd2f95e8595cfd2f.zip |
Remove old C fs_mgr interface
Remove superfluous fs_mgr flags as well.
Bug: 62292478
Test: tree hugger, fs_mgr_unit_test
Change-Id: Ib307400941b46ca8bcb51d479668efd82fc3ed2d
Diffstat (limited to 'fs_mgr')
-rw-r--r-- | fs_mgr/fs_mgr.cpp | 60 | ||||
-rw-r--r-- | fs_mgr/fs_mgr_fstab.cpp | 225 | ||||
-rw-r--r-- | fs_mgr/include/fs_mgr.h | 5 | ||||
-rw-r--r-- | fs_mgr/include_fstab/fstab/fstab.h | 151 | ||||
-rw-r--r-- | fs_mgr/tests/fs_mgr_test.cpp | 211 |
5 files changed, 143 insertions, 509 deletions
diff --git a/fs_mgr/fs_mgr.cpp b/fs_mgr/fs_mgr.cpp index c878b21de..e6842938d 100644 --- a/fs_mgr/fs_mgr.cpp +++ b/fs_mgr/fs_mgr.cpp @@ -378,7 +378,7 @@ static void tune_quota(const std::string& blk_device, const FstabEntry& entry, // Set the number of reserved filesystem blocks if needed. static void tune_reserved_size(const std::string& blk_device, const FstabEntry& entry, const struct ext4_super_block* sb, int* fs_stat) { - if (!entry.fs_mgr_flags.reserved_size) { + if (entry.reserved_size != 0) { return; } @@ -551,7 +551,7 @@ static int prepare_fs_for_mount(const std::string& blk_device, const FstabEntry& } if (is_extfs(entry.fs_type) && - (entry.fs_mgr_flags.reserved_size || entry.fs_mgr_flags.file_encryption || + (entry.reserved_size != 0 || entry.fs_mgr_flags.file_encryption || entry.fs_mgr_flags.fs_verity)) { struct ext4_super_block sb; @@ -806,7 +806,7 @@ static bool needs_block_encryption(const FstabEntry& entry) { } static bool should_use_metadata_encryption(const FstabEntry& entry) { - return entry.fs_mgr_flags.key_directory && + return !entry.key_dir.empty() && (entry.fs_mgr_flags.file_encryption || entry.fs_mgr_flags.force_fde_or_fbe); } @@ -1374,18 +1374,6 @@ static int fs_mgr_do_mount_helper(Fstab* fstab, const std::string& n_name, return FS_MGR_DOMNT_FAILED; } -int fs_mgr_do_mount(fstab* fstab, const char* n_name, char* n_blk_device, char* tmp_mount_point) { - auto new_fstab = LegacyFstabToFstab(fstab); - return fs_mgr_do_mount_helper(&new_fstab, n_name, n_blk_device, tmp_mount_point, -1); -} - -int fs_mgr_do_mount(fstab* fstab, const char* n_name, char* n_blk_device, char* tmp_mount_point, - bool needs_checkpoint) { - auto new_fstab = LegacyFstabToFstab(fstab); - return fs_mgr_do_mount_helper(&new_fstab, n_name, n_blk_device, tmp_mount_point, - needs_checkpoint); -} - int fs_mgr_do_mount(Fstab* fstab, const char* n_name, char* n_blk_device, char* tmp_mount_point) { return fs_mgr_do_mount_helper(fstab, n_name, n_blk_device, tmp_mount_point, -1); } @@ -1556,48 +1544,6 @@ bool fs_mgr_swapon_all(const Fstab& fstab) { return ret; } -struct fstab_rec const* fs_mgr_get_crypt_entry(fstab const* fstab) { - int i; - - if (!fstab) { - return NULL; - } - - /* Look for the encryptable partition to find the data */ - for (i = 0; i < fstab->num_entries; i++) { - /* Don't deal with vold managed enryptable partitions here */ - if (!(fstab->recs[i].fs_mgr_flags & MF_VOLDMANAGED) && - (fstab->recs[i].fs_mgr_flags & - (MF_CRYPT | MF_FORCECRYPT | MF_FORCEFDEORFBE | MF_FILEENCRYPTION))) { - return &fstab->recs[i]; - } - } - return NULL; -} - -/* - * key_loc must be at least PROPERTY_VALUE_MAX bytes long - * - * real_blk_device must be at least PROPERTY_VALUE_MAX bytes long - */ -void fs_mgr_get_crypt_info(fstab* fstab, char* key_loc, char* real_blk_device, size_t size) { - struct fstab_rec const* rec = fs_mgr_get_crypt_entry(fstab); - if (key_loc) { - if (rec) { - strlcpy(key_loc, rec->key_loc, size); - } else { - *key_loc = '\0'; - } - } - if (real_blk_device) { - if (rec) { - strlcpy(real_blk_device, rec->blk_device, size); - } else { - *real_blk_device = '\0'; - } - } -} - bool fs_mgr_load_verity_state(int* mode) { /* return the default mode, unless any of the verified partitions are in * logging mode, in which case return that */ diff --git a/fs_mgr/fs_mgr_fstab.cpp b/fs_mgr/fs_mgr_fstab.cpp index ee88e0d1b..9a8ad5692 100644 --- a/fs_mgr/fs_mgr_fstab.cpp +++ b/fs_mgr/fs_mgr_fstab.cpp @@ -175,7 +175,6 @@ void ParseMountFlags(const std::string& flags, FstabEntry* entry) { } void ParseFsMgrFlags(const std::string& flags, FstabEntry* entry) { - entry->fs_mgr_flags.val = 0U; for (const auto& flag : Split(flags, ",")) { std::string arg; if (auto equal_sign = flag.find('='); equal_sign != std::string::npos) { @@ -239,18 +238,14 @@ void ParseFsMgrFlags(const std::string& flags, FstabEntry* entry) { } } else if (StartsWith(flag, "length=")) { // The length flag is followed by an = and the size of the partition. - entry->fs_mgr_flags.length = true; if (!ParseInt(arg, &entry->length)) { LWARNING << "Warning: length= flag malformed: " << arg; } } else if (StartsWith(flag, "swapprio=")) { - entry->fs_mgr_flags.swap_prio = true; if (!ParseInt(arg, &entry->swap_prio)) { LWARNING << "Warning: length= flag malformed: " << arg; } } else if (StartsWith(flag, "zramsize=")) { - entry->fs_mgr_flags.zram_size = true; - if (!arg.empty() && arg.back() == '%') { arg.pop_back(); int val; @@ -282,13 +277,11 @@ void ParseFsMgrFlags(const std::string& flags, FstabEntry* entry) { entry->file_contents_mode = "aes-256-xts"; entry->file_names_mode = "aes-256-cts"; } else if (StartsWith(flag, "max_comp_streams=")) { - entry->fs_mgr_flags.max_comp_streams = true; if (!ParseInt(arg, &entry->max_comp_streams)) { LWARNING << "Warning: max_comp_streams= flag malformed: " << arg; } } else if (StartsWith(flag, "reservedsize=")) { // The reserved flag is followed by an = and the reserved size of the partition. - entry->fs_mgr_flags.reserved_size = true; uint64_t size; if (!ParseByteCount(arg, &size)) { LWARNING << "Warning: reservedsize= flag malformed: " << arg; @@ -298,7 +291,6 @@ void ParseFsMgrFlags(const std::string& flags, FstabEntry* entry) { } else if (StartsWith(flag, "eraseblk=")) { // The erase block size flag is followed by an = and the flash erase block size. Get it, // check that it is a power of 2 and at least 4096, and return it. - entry->fs_mgr_flags.erase_blk_size = true; off64_t val; if (!ParseInt(arg, &val) || val < 4096 || (val & (val - 1)) != 0) { LWARNING << "Warning: eraseblk= flag malformed: " << arg; @@ -308,7 +300,6 @@ void ParseFsMgrFlags(const std::string& flags, FstabEntry* entry) { } else if (StartsWith(flag, "logicalblk=")) { // The logical block size flag is followed by an = and the flash logical block size. Get // it, check that it is a power of 2 and at least 4096, and return it. - entry->fs_mgr_flags.logical_blk_size = true; off64_t val; if (!ParseInt(arg, &val) || val < 4096 || (val & (val - 1)) != 0) { LWARNING << "Warning: logicalblk= flag malformed: " << arg; @@ -320,23 +311,18 @@ void ParseFsMgrFlags(const std::string& flags, FstabEntry* entry) { entry->vbmeta_partition = arg; } else if (StartsWith(flag, "keydirectory=")) { // The metadata flag is followed by an = and the directory for the keys. - entry->fs_mgr_flags.key_directory = true; entry->key_dir = arg; } else if (StartsWith(flag, "sysfs_path=")) { // The path to trigger device gc by idle-maint of vold. - entry->fs_mgr_flags.sysfs = true; entry->sysfs_path = arg; } else if (StartsWith(flag, "zram_loopback_path=")) { // The path to use loopback for zram. - entry->fs_mgr_flags.zram_loopback_path = true; entry->zram_loopback_path = arg; } else if (StartsWith(flag, "zram_loopback_size=")) { - entry->fs_mgr_flags.zram_loopback_size = true; if (!ParseByteCount(arg, &entry->zram_loopback_size)) { LWARNING << "Warning: zram_loopback_size= flag malformed: " << arg; } } else if (StartsWith(flag, "zram_backing_dev_path=")) { - entry->fs_mgr_flags.zram_backing_dev_path = true; entry->zram_backing_dev_path = arg; } else if (StartsWith(flag, "avb_key=")) { entry->avb_key = arg; @@ -778,214 +764,3 @@ bool is_dt_compatible() { return false; } - -// Everything from here down is deprecated and will be removed shortly. - -using android::fs_mgr::Fstab; -using android::fs_mgr::FstabEntry; -using android::fs_mgr::ReadDefaultFstab; -using android::fs_mgr::ReadFstabFromFile; - -struct fstab* fs_mgr_read_fstab(const char* fstab_path) { - Fstab fstab; - if (!ReadFstabFromFile(fstab_path, &fstab)) { - return nullptr; - } - - return FstabToLegacyFstab(fstab); -} - -struct fstab* fs_mgr_read_fstab_default() { - Fstab fstab; - if (!ReadDefaultFstab(&fstab)) { - return nullptr; - } - - return FstabToLegacyFstab(fstab); -} - -void fs_mgr_free_fstab(struct fstab *fstab) -{ - int i; - - if (!fstab) { - return; - } - - for (i = 0; i < fstab->num_entries; i++) { - /* Free the pointers return by strdup(3) */ - free(fstab->recs[i].blk_device); - free(fstab->recs[i].logical_partition_name); - free(fstab->recs[i].mount_point); - free(fstab->recs[i].fs_type); - free(fstab->recs[i].fs_options); - free(fstab->recs[i].key_loc); - free(fstab->recs[i].key_dir); - free(fstab->recs[i].label); - free(fstab->recs[i].file_contents_mode); - free(fstab->recs[i].file_names_mode); - free(fstab->recs[i].sysfs_path); - free(fstab->recs[i].zram_loopback_path); - free(fstab->recs[i].zram_backing_dev_path); - } - - /* Free the fstab_recs array created by calloc(3) */ - free(fstab->recs); - - /* Free fstab */ - free(fstab); -} - -struct fstab_rec* fs_mgr_get_entry_for_mount_point(struct fstab* fstab, const std::string& path) { - if (!fstab) { - return nullptr; - } - for (int i = 0; i < fstab->num_entries; i++) { - if (fstab->recs[i].mount_point && path == fstab->recs[i].mount_point) { - return &fstab->recs[i]; - } - } - return nullptr; -} - -FstabEntry FstabRecToFstabEntry(const fstab_rec* fstab_rec) { - FstabEntry entry; - entry.blk_device = fstab_rec->blk_device; - entry.logical_partition_name = fstab_rec->logical_partition_name; - entry.mount_point = fstab_rec->mount_point; - entry.fs_type = fstab_rec->fs_type; - entry.flags = fstab_rec->flags; - entry.fs_options = fstab_rec->fs_options; - entry.fs_mgr_flags.val = fstab_rec->fs_mgr_flags; - entry.key_loc = fstab_rec->key_loc; - entry.key_dir = fstab_rec->key_dir; - entry.verity_loc = fstab_rec->verity_loc; - entry.length = fstab_rec->length; - entry.label = fstab_rec->label; - entry.partnum = fstab_rec->partnum; - entry.swap_prio = fstab_rec->swap_prio; - entry.max_comp_streams = fstab_rec->max_comp_streams; - entry.zram_size = fstab_rec->zram_size; - entry.reserved_size = fstab_rec->reserved_size; - entry.file_contents_mode = fstab_rec->file_contents_mode; - entry.file_names_mode = fstab_rec->file_names_mode; - entry.erase_blk_size = fstab_rec->erase_blk_size; - entry.logical_blk_size = fstab_rec->logical_blk_size; - entry.sysfs_path = fstab_rec->sysfs_path; - entry.zram_loopback_path = fstab_rec->zram_loopback_path; - entry.zram_loopback_size = fstab_rec->zram_loopback_size; - entry.zram_backing_dev_path = fstab_rec->zram_backing_dev_path; - - return entry; -} - -Fstab LegacyFstabToFstab(const struct fstab* legacy_fstab) { - Fstab fstab; - for (int i = 0; i < legacy_fstab->num_entries; i++) { - fstab.emplace_back(FstabRecToFstabEntry(&legacy_fstab->recs[i])); - } - - return fstab; -} - -fstab* FstabToLegacyFstab(const Fstab& fstab) { - struct fstab* legacy_fstab = static_cast<struct fstab*>(calloc(1, sizeof(struct fstab))); - legacy_fstab->num_entries = fstab.size(); - legacy_fstab->recs = - static_cast<fstab_rec*>(calloc(legacy_fstab->num_entries, sizeof(fstab_rec))); - - for (int i = 0; i < legacy_fstab->num_entries; i++) { - legacy_fstab->recs[i].blk_device = strdup(fstab[i].blk_device.c_str()); - legacy_fstab->recs[i].logical_partition_name = - strdup(fstab[i].logical_partition_name.c_str()); - legacy_fstab->recs[i].mount_point = strdup(fstab[i].mount_point.c_str()); - legacy_fstab->recs[i].fs_type = strdup(fstab[i].fs_type.c_str()); - legacy_fstab->recs[i].flags = fstab[i].flags; - legacy_fstab->recs[i].fs_options = strdup(fstab[i].fs_options.c_str()); - legacy_fstab->recs[i].fs_mgr_flags = fstab[i].fs_mgr_flags.val; - legacy_fstab->recs[i].key_loc = strdup(fstab[i].key_loc.c_str()); - legacy_fstab->recs[i].key_dir = strdup(fstab[i].key_dir.c_str()); - legacy_fstab->recs[i].verity_loc = strdup(fstab[i].verity_loc.c_str()); - legacy_fstab->recs[i].length = fstab[i].length; - legacy_fstab->recs[i].label = strdup(fstab[i].label.c_str()); - legacy_fstab->recs[i].partnum = fstab[i].partnum; - legacy_fstab->recs[i].swap_prio = fstab[i].swap_prio; - legacy_fstab->recs[i].max_comp_streams = fstab[i].max_comp_streams; - legacy_fstab->recs[i].zram_size = fstab[i].zram_size; - legacy_fstab->recs[i].reserved_size = fstab[i].reserved_size; - legacy_fstab->recs[i].file_contents_mode = strdup(fstab[i].file_contents_mode.c_str()); - legacy_fstab->recs[i].file_names_mode = strdup(fstab[i].file_names_mode.c_str()); - legacy_fstab->recs[i].erase_blk_size = fstab[i].erase_blk_size; - legacy_fstab->recs[i].logical_blk_size = fstab[i].logical_blk_size; - legacy_fstab->recs[i].sysfs_path = strdup(fstab[i].sysfs_path.c_str()); - legacy_fstab->recs[i].zram_loopback_path = strdup(fstab[i].zram_loopback_path.c_str()); - legacy_fstab->recs[i].zram_loopback_size = fstab[i].zram_loopback_size; - legacy_fstab->recs[i].zram_backing_dev_path = strdup(fstab[i].zram_backing_dev_path.c_str()); - } - return legacy_fstab; -} - -int fs_mgr_is_voldmanaged(const struct fstab_rec *fstab) -{ - return fstab->fs_mgr_flags & MF_VOLDMANAGED; -} - -int fs_mgr_is_nonremovable(const struct fstab_rec *fstab) -{ - return fstab->fs_mgr_flags & MF_NONREMOVABLE; -} - -int fs_mgr_is_verified(const struct fstab_rec *fstab) -{ - return fstab->fs_mgr_flags & MF_VERIFY; -} - -int fs_mgr_is_encryptable(const struct fstab_rec *fstab) -{ - return fstab->fs_mgr_flags & (MF_CRYPT | MF_FORCECRYPT | MF_FORCEFDEORFBE); -} - -void fs_mgr_get_file_encryption_modes(const struct fstab_rec* fstab, const char** contents_mode_ret, - const char** filenames_mode_ret) { - *contents_mode_ret = fstab->file_contents_mode; - *filenames_mode_ret = fstab->file_names_mode; -} - -int fs_mgr_is_convertible_to_fbe(const struct fstab_rec *fstab) -{ - return fstab->fs_mgr_flags & MF_FORCEFDEORFBE; -} - -int fs_mgr_is_noemulatedsd(const struct fstab_rec *fstab) -{ - return fstab->fs_mgr_flags & MF_NOEMULATEDSD; -} - -int fs_mgr_is_notrim(const struct fstab_rec* fstab) { - return fstab->fs_mgr_flags & MF_NOTRIM; -} - -int fs_mgr_is_quota(const struct fstab_rec* fstab) { - return fstab->fs_mgr_flags & MF_QUOTA; -} - -int fs_mgr_has_sysfs_path(const struct fstab_rec *fstab) -{ - return fstab->fs_mgr_flags & MF_SYSFS; -} - -int fs_mgr_is_logical(const struct fstab_rec* fstab) { - return fstab->fs_mgr_flags & MF_LOGICAL; -} - -int fs_mgr_is_checkpoint(const struct fstab_rec* fstab) { - return fstab->fs_mgr_flags & (MF_CHECKPOINT_FS | MF_CHECKPOINT_BLK); -} - -int fs_mgr_is_checkpoint_fs(const struct fstab_rec* fstab) { - return fstab->fs_mgr_flags & MF_CHECKPOINT_FS; -} - -int fs_mgr_is_checkpoint_blk(const struct fstab_rec* fstab) { - return fstab->fs_mgr_flags & MF_CHECKPOINT_BLK; -} diff --git a/fs_mgr/include/fs_mgr.h b/fs_mgr/include/fs_mgr.h index 6e9f1b068..8af80a7ad 100644 --- a/fs_mgr/include/fs_mgr.h +++ b/fs_mgr/include/fs_mgr.h @@ -65,9 +65,6 @@ int fs_mgr_mount_all(android::fs_mgr::Fstab* fstab, int mount_mode); #define FS_MGR_DOMNT_FAILED (-1) #define FS_MGR_DOMNT_BUSY (-2) #define FS_MGR_DOMNT_SUCCESS 0 -int fs_mgr_do_mount(fstab* fstab, const char* n_name, char* n_blk_device, char* tmp_mount_point); -int fs_mgr_do_mount(fstab* fstab, const char* n_name, char* n_blk_device, char* tmp_mount_point, - bool needs_checkpoint); int fs_mgr_do_mount(android::fs_mgr::Fstab* fstab, const char* n_name, char* n_blk_device, char* tmp_mount_point); int fs_mgr_do_mount(android::fs_mgr::Fstab* fstab, const char* n_name, char* n_blk_device, @@ -75,8 +72,6 @@ int fs_mgr_do_mount(android::fs_mgr::Fstab* fstab, const char* n_name, char* n_b int fs_mgr_do_mount_one(const android::fs_mgr::FstabEntry& entry, const std::string& mount_point = ""); int fs_mgr_do_tmpfs_mount(const char *n_name); -fstab_rec const* fs_mgr_get_crypt_entry(fstab const* fstab); -void fs_mgr_get_crypt_info(fstab* fstab, char* key_loc, char* real_blk_device, size_t size); bool fs_mgr_load_verity_state(int* mode); bool fs_mgr_update_verity_state( std::function<void(const std::string& mount_point, int mode)> callback); diff --git a/fs_mgr/include_fstab/fstab/fstab.h b/fs_mgr/include_fstab/fstab/fstab.h index a942d43df..a3d9fdd4a 100644 --- a/fs_mgr/include_fstab/fstab/fstab.h +++ b/fs_mgr/include_fstab/fstab/fstab.h @@ -16,75 +16,13 @@ #pragma once -#include <linux/dm-ioctl.h> -#include <stdbool.h> #include <stdint.h> -#include <stdio.h> #include <sys/types.h> #include <set> #include <string> #include <vector> -/* - * The entries must be kept in the same order as they were seen in the fstab. - * Unless explicitly requested, a lookup on mount point should always - * return the 1st one. - */ -struct fstab { - int num_entries; - struct fstab_rec* recs; -}; - -struct fstab_rec { - char* blk_device; - char* logical_partition_name; - char* mount_point; - char* fs_type; - unsigned long flags; - char* fs_options; - uint64_t fs_mgr_flags; - char* key_loc; - char* key_dir; - char* verity_loc; - off64_t length; - char* label; - int partnum; - int swap_prio; - int max_comp_streams; - off64_t zram_size; - off64_t reserved_size; - char* file_contents_mode; - char* file_names_mode; - off64_t erase_blk_size; - off64_t logical_blk_size; - char* sysfs_path; - char* zram_loopback_path; - uint64_t zram_loopback_size; - char* zram_backing_dev_path; -}; - -struct fstab* fs_mgr_read_fstab_default(); -struct fstab* fs_mgr_read_fstab(const char* fstab_path); -void fs_mgr_free_fstab(struct fstab* fstab); - -struct fstab_rec* fs_mgr_get_entry_for_mount_point(struct fstab* fstab, const std::string& path); -int fs_mgr_is_voldmanaged(const struct fstab_rec* fstab); -int fs_mgr_is_nonremovable(const struct fstab_rec* fstab); -int fs_mgr_is_verified(const struct fstab_rec* fstab); -int fs_mgr_is_encryptable(const struct fstab_rec* fstab); -void fs_mgr_get_file_encryption_modes(const struct fstab_rec* fstab, const char** contents_mode_ret, - const char** filenames_mode_ret); -int fs_mgr_is_convertible_to_fbe(const struct fstab_rec* fstab); -int fs_mgr_is_noemulatedsd(const struct fstab_rec* fstab); -int fs_mgr_is_notrim(const struct fstab_rec* fstab); -int fs_mgr_is_quota(const struct fstab_rec* fstab); -int fs_mgr_is_logical(const struct fstab_rec* fstab); -int fs_mgr_is_checkpoint(const struct fstab_rec* fstab); -int fs_mgr_is_checkpoint_fs(const struct fstab_rec* fstab); -int fs_mgr_is_checkpoint_blk(const struct fstab_rec* fstab); -int fs_mgr_has_sysfs_path(const struct fstab_rec* fstab); - std::string fs_mgr_get_slot_suffix(); std::string fs_mgr_get_other_slot_suffix(); @@ -119,60 +57,34 @@ struct FstabEntry { std::string zram_backing_dev_path; std::string avb_key; - // TODO: Remove this union once fstab_rec is deprecated. It only serves as a - // convenient way to convert between fstab_rec::fs_mgr_flags and these bools. - union FsMgrFlags { - uint64_t val; - struct { - // bit 0 - bool wait : 1; - bool check : 1; - bool crypt : 1; - bool nonremovable : 1; - bool vold_managed : 1; - bool length : 1; - bool recovery_only : 1; - bool swap_prio : 1; - - // bit 8 - bool zram_size : 1; - bool verify : 1; - bool force_crypt : 1; - bool no_emulated_sd : 1; // No emulated sdcard daemon; sd card is the only external - // storage. - bool no_trim : 1; - bool file_encryption : 1; - bool formattable : 1; - bool slot_select : 1; - - // bit 16 - bool force_fde_or_fbe : 1; - bool late_mount : 1; - bool no_fail : 1; - bool verify_at_boot : 1; - bool max_comp_streams : 1; - bool reserved_size : 1; - bool quota : 1; - bool erase_blk_size : 1; - - // bit 24 - bool logical_blk_size : 1; - bool avb : 1; - bool key_directory : 1; - bool sysfs : 1; - bool logical : 1; - bool checkpoint_blk : 1; - bool checkpoint_fs : 1; - bool first_stage_mount : 1; - - // bit 32 - bool slot_select_other : 1; - bool zram_loopback_path : 1; - bool zram_loopback_size : 1; - bool zram_backing_dev_path : 1; - bool fs_verity : 1; - }; - } fs_mgr_flags; + struct FsMgrFlags { + bool wait : 1; + bool check : 1; + bool crypt : 1; + bool nonremovable : 1; + bool vold_managed : 1; + bool recovery_only : 1; + bool verify : 1; + bool force_crypt : 1; + bool no_emulated_sd : 1; // No emulated sdcard daemon; sd card is the only external + // storage. + bool no_trim : 1; + bool file_encryption : 1; + bool formattable : 1; + bool slot_select : 1; + bool force_fde_or_fbe : 1; + bool late_mount : 1; + bool no_fail : 1; + bool verify_at_boot : 1; + bool quota : 1; + bool avb : 1; + bool logical : 1; + bool checkpoint_blk : 1; + bool checkpoint_fs : 1; + bool first_stage_mount : 1; + bool slot_select_other : 1; + bool fs_verity : 1; + } fs_mgr_flags = {}; bool is_encryptable() const { return fs_mgr_flags.crypt || fs_mgr_flags.force_crypt || fs_mgr_flags.force_fde_or_fbe; @@ -180,6 +92,8 @@ struct FstabEntry { }; // An Fstab is a collection of FstabEntry structs. +// The entries must be kept in the same order as they were seen in the fstab. +// Unless explicitly requested, a lookup on mount point should always return the 1st one. using Fstab = std::vector<FstabEntry>; bool ReadFstabFromFile(const std::string& path, Fstab* fstab); @@ -195,8 +109,3 @@ std::set<std::string> GetBootDevices(); } // namespace fs_mgr } // namespace android - -// Temporary conversion functions. -android::fs_mgr::FstabEntry FstabRecToFstabEntry(const fstab_rec* fstab_rec); -android::fs_mgr::Fstab LegacyFstabToFstab(const struct fstab* legacy_fstab); -fstab* FstabToLegacyFstab(const android::fs_mgr::Fstab& fstab); diff --git a/fs_mgr/tests/fs_mgr_test.cpp b/fs_mgr/tests/fs_mgr_test.cpp index 870c98cba..1815a3870 100644 --- a/fs_mgr/tests/fs_mgr_test.cpp +++ b/fs_mgr/tests/fs_mgr_test.cpp @@ -256,6 +256,36 @@ TEST(fs_mgr, ReadFstabFromFile_MountOptions) { EXPECT_EQ("", fstab[10].fs_options); } +static bool CompareFlags(FstabEntry::FsMgrFlags& lhs, FstabEntry::FsMgrFlags& rhs) { + // clang-format off + return lhs.wait == rhs.wait && + lhs.check == rhs.check && + lhs.crypt == rhs.crypt && + lhs.nonremovable == rhs.nonremovable && + lhs.vold_managed == rhs.vold_managed && + lhs.recovery_only == rhs.recovery_only && + lhs.verify == rhs.verify && + lhs.force_crypt == rhs.force_crypt && + lhs.no_emulated_sd == rhs.no_emulated_sd && + lhs.no_trim == rhs.no_trim && + lhs.file_encryption == rhs.file_encryption && + lhs.formattable == rhs.formattable && + lhs.slot_select == rhs.slot_select && + lhs.force_fde_or_fbe == rhs.force_fde_or_fbe && + lhs.late_mount == rhs.late_mount && + lhs.no_fail == rhs.no_fail && + lhs.verify_at_boot == rhs.verify_at_boot && + lhs.quota == rhs.quota && + lhs.avb == rhs.avb && + lhs.logical == rhs.logical && + lhs.checkpoint_blk == rhs.checkpoint_blk && + lhs.checkpoint_fs == rhs.checkpoint_fs && + lhs.first_stage_mount == rhs.first_stage_mount && + lhs.slot_select_other == rhs.slot_select_other && + lhs.fs_verity == rhs.fs_verity; + // clang-format on +} + TEST(fs_mgr, ReadFstabFromFile_FsMgrFlags) { TemporaryFile tf; ASSERT_TRUE(tf.fd != -1); @@ -276,62 +306,62 @@ source none5 swap defaults defaults auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); { - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.wait = true; flags.check = true; flags.nonremovable = true; flags.recovery_only = true; flags.verify_at_boot = true; flags.verify = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); } entry++; EXPECT_EQ("none1", entry->mount_point); { - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.avb = true; flags.no_emulated_sd = true; flags.no_trim = true; flags.formattable = true; flags.slot_select = true; flags.no_fail = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); } entry++; EXPECT_EQ("none2", entry->mount_point); { - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.first_stage_mount = true; flags.late_mount = true; flags.quota = true; flags.logical = true; flags.slot_select_other = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); } entry++; EXPECT_EQ("none3", entry->mount_point); { - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.checkpoint_blk = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); } entry++; EXPECT_EQ("none4", entry->mount_point); { - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.checkpoint_fs = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); } entry++; EXPECT_EQ("none5", entry->mount_point); { - FstabEntry::FsMgrFlags flags = {0}; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + FstabEntry::FsMgrFlags flags = {}; + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); } } @@ -355,8 +385,8 @@ source none2 swap defaults forcefdeorfbe= auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); { - FstabEntry::FsMgrFlags flags = {0}; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + FstabEntry::FsMgrFlags flags = {}; + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); } EXPECT_EQ("", entry->key_loc); EXPECT_EQ("", entry->key_dir); @@ -380,25 +410,13 @@ source none2 swap defaults forcefdeorfbe= EXPECT_EQ("none1", entry->mount_point); { - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.crypt = true; flags.force_crypt = true; flags.file_encryption = true; - flags.key_directory = true; - flags.length = true; - flags.swap_prio = true; - flags.zram_size = true; - flags.max_comp_streams = true; flags.verify = true; flags.avb = true; - flags.reserved_size = true; - flags.erase_blk_size = true; - flags.logical_blk_size = true; - flags.sysfs = true; - flags.zram_loopback_path = true; - flags.zram_loopback_size = true; - flags.zram_backing_dev_path = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); } EXPECT_EQ("", entry->key_loc); EXPECT_EQ("", entry->key_dir); @@ -423,9 +441,9 @@ source none2 swap defaults forcefdeorfbe= // forcefdeorfbe sets file_contents_mode and file_names_mode by default, so test it separately. EXPECT_EQ("none2", entry->mount_point); { - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.force_fde_or_fbe = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); } EXPECT_EQ("aes-256-xts", entry->file_contents_mode); EXPECT_EQ("aes-256-cts", entry->file_names_mode); @@ -444,12 +462,12 @@ source none0 swap defaults encryptable=/dir/key EXPECT_TRUE(ReadFstabFromFile(tf.path, &fstab)); ASSERT_EQ(1U, fstab.size()); - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.crypt = true; auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("/dir/key", entry->key_loc); } @@ -468,30 +486,30 @@ source none3 swap defaults voldmanaged=sdcard:auto EXPECT_TRUE(ReadFstabFromFile(tf.path, &fstab)); ASSERT_EQ(4U, fstab.size()); - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.vold_managed = true; auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_TRUE(entry->label.empty()); EXPECT_EQ(-1, entry->partnum); entry++; EXPECT_EQ("none1", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_TRUE(entry->label.empty()); EXPECT_EQ(-1, entry->partnum); entry++; EXPECT_EQ("none2", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("sdcard", entry->label); EXPECT_EQ(3, entry->partnum); entry++; EXPECT_EQ("none3", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("sdcard", entry->label); EXPECT_EQ(-1, entry->partnum); } @@ -509,17 +527,16 @@ source none1 swap defaults length=123456 EXPECT_TRUE(ReadFstabFromFile(tf.path, &fstab)); ASSERT_EQ(2U, fstab.size()); - FstabEntry::FsMgrFlags flags = {0}; - flags.length = true; + FstabEntry::FsMgrFlags flags = {}; auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->length); entry++; EXPECT_EQ("none1", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(123456, entry->length); } @@ -536,17 +553,16 @@ source none1 swap defaults swapprio=123456 EXPECT_TRUE(ReadFstabFromFile(tf.path, &fstab)); ASSERT_EQ(2U, fstab.size()); - FstabEntry::FsMgrFlags flags = {0}; - flags.swap_prio = true; + FstabEntry::FsMgrFlags flags = {}; auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(-1, entry->swap_prio); entry++; EXPECT_EQ("none1", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(123456, entry->swap_prio); } @@ -567,37 +583,36 @@ source none5 swap defaults zramsize=% EXPECT_TRUE(ReadFstabFromFile(tf.path, &fstab)); ASSERT_EQ(6U, fstab.size()); - FstabEntry::FsMgrFlags flags = {0}; - flags.zram_size = true; + FstabEntry::FsMgrFlags flags = {}; auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->zram_size); entry++; EXPECT_EQ("none1", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(123456, entry->zram_size); entry++; EXPECT_EQ("none2", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->zram_size); entry++; EXPECT_EQ("none3", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_NE(0, entry->zram_size); entry++; EXPECT_EQ("none4", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->zram_size); entry++; EXPECT_EQ("none5", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->zram_size); } @@ -617,9 +632,9 @@ source none0 swap defaults verify=/dir/key auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.verify = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("/dir/key", entry->verity_loc); } @@ -640,9 +655,9 @@ source none0 swap defaults forceencrypt=/dir/key auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.force_crypt = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("/dir/key", entry->key_loc); } @@ -663,9 +678,9 @@ source none0 swap defaults forcefdeorfbe=/dir/key auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.force_fde_or_fbe = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("/dir/key", entry->key_loc); EXPECT_EQ("aes-256-xts", entry->file_contents_mode); @@ -695,72 +710,72 @@ source none10 swap defaults fileencryption=ice:adiantum: EXPECT_TRUE(ReadFstabFromFile(tf.path, &fstab)); ASSERT_EQ(11U, fstab.size()); - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.file_encryption = true; auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("", entry->file_contents_mode); EXPECT_EQ("", entry->file_names_mode); entry++; EXPECT_EQ("none1", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("aes-256-xts", entry->file_contents_mode); EXPECT_EQ("aes-256-cts", entry->file_names_mode); entry++; EXPECT_EQ("none2", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("aes-256-xts", entry->file_contents_mode); EXPECT_EQ("aes-256-cts", entry->file_names_mode); entry++; EXPECT_EQ("none3", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("adiantum", entry->file_contents_mode); EXPECT_EQ("adiantum", entry->file_names_mode); entry++; EXPECT_EQ("none4", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("adiantum", entry->file_contents_mode); EXPECT_EQ("aes-256-heh", entry->file_names_mode); entry++; EXPECT_EQ("none5", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("ice", entry->file_contents_mode); EXPECT_EQ("aes-256-cts", entry->file_names_mode); entry++; EXPECT_EQ("none6", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("ice", entry->file_contents_mode); EXPECT_EQ("", entry->file_names_mode); entry++; EXPECT_EQ("none7", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("ice", entry->file_contents_mode); EXPECT_EQ("aes-256-cts", entry->file_names_mode); entry++; EXPECT_EQ("none8", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("ice", entry->file_contents_mode); EXPECT_EQ("aes-256-heh", entry->file_names_mode); entry++; EXPECT_EQ("none9", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("ice", entry->file_contents_mode); EXPECT_EQ("adiantum", entry->file_names_mode); entry++; EXPECT_EQ("none10", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("", entry->file_contents_mode); EXPECT_EQ("", entry->file_names_mode); } @@ -778,17 +793,16 @@ source none1 swap defaults max_comp_streams=123456 EXPECT_TRUE(ReadFstabFromFile(tf.path, &fstab)); ASSERT_EQ(2U, fstab.size()); - FstabEntry::FsMgrFlags flags = {0}; - flags.max_comp_streams = true; + FstabEntry::FsMgrFlags flags = {}; auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->max_comp_streams); entry++; EXPECT_EQ("none1", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(123456, entry->max_comp_streams); } @@ -807,27 +821,26 @@ source none3 swap defaults reservedsize=2m EXPECT_TRUE(ReadFstabFromFile(tf.path, &fstab)); ASSERT_EQ(4U, fstab.size()); - FstabEntry::FsMgrFlags flags = {0}; - flags.reserved_size = true; + FstabEntry::FsMgrFlags flags = {}; auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->reserved_size); entry++; EXPECT_EQ("none1", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(2, entry->reserved_size); entry++; EXPECT_EQ("none2", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(1024, entry->reserved_size); entry++; EXPECT_EQ("none3", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(2 * 1024 * 1024, entry->reserved_size); } @@ -846,27 +859,26 @@ source none3 swap defaults eraseblk=8192 EXPECT_TRUE(ReadFstabFromFile(tf.path, &fstab)); ASSERT_EQ(4U, fstab.size()); - FstabEntry::FsMgrFlags flags = {0}; - flags.erase_blk_size = true; + FstabEntry::FsMgrFlags flags = {}; auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->erase_blk_size); entry++; EXPECT_EQ("none1", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->erase_blk_size); entry++; EXPECT_EQ("none2", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->erase_blk_size); entry++; EXPECT_EQ("none3", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(8192, entry->erase_blk_size); } @@ -885,27 +897,26 @@ source none3 swap defaults logicalblk=8192 EXPECT_TRUE(ReadFstabFromFile(tf.path, &fstab)); ASSERT_EQ(4U, fstab.size()); - FstabEntry::FsMgrFlags flags = {0}; - flags.logical_blk_size = true; + FstabEntry::FsMgrFlags flags = {}; auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->logical_blk_size); entry++; EXPECT_EQ("none1", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->logical_blk_size); entry++; EXPECT_EQ("none2", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(0, entry->logical_blk_size); entry++; EXPECT_EQ("none3", entry->mount_point); - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ(8192, entry->logical_blk_size); } @@ -925,9 +936,9 @@ source none0 swap defaults avb=vbmeta_partition auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - FstabEntry::FsMgrFlags flags = {0}; + FstabEntry::FsMgrFlags flags = {}; flags.avb = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("vbmeta_partition", entry->vbmeta_partition); } @@ -948,9 +959,8 @@ source none0 swap defaults keydirectory=/dir/key auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - FstabEntry::FsMgrFlags flags = {0}; - flags.key_directory = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + FstabEntry::FsMgrFlags flags = {}; + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("/dir/key", entry->key_dir); } @@ -971,9 +981,8 @@ source none0 swap defaults sysfs_path=/sys/device auto entry = fstab.begin(); EXPECT_EQ("none0", entry->mount_point); - FstabEntry::FsMgrFlags flags = {0}; - flags.sysfs = true; - EXPECT_EQ(flags.val, entry->fs_mgr_flags.val); + FstabEntry::FsMgrFlags flags = {}; + EXPECT_TRUE(CompareFlags(flags, entry->fs_mgr_flags)); EXPECT_EQ("/sys/device", entry->sysfs_path); } |