diff --git a/fs_mgr/fs_mgr.cpp b/fs_mgr/fs_mgr.cpp index 63102381b..907bdb140 100644 --- a/fs_mgr/fs_mgr.cpp +++ b/fs_mgr/fs_mgr.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -1410,7 +1411,7 @@ int fs_mgr_swapon_all(fstab* fstab) { ret = -1; continue; } - fprintf(zram_fp.get(), "%u\n", fstab->recs[i].zram_size); + fprintf(zram_fp.get(), "%" PRId64 "\n", fstab->recs[i].zram_size); } if (fstab->recs[i].fs_mgr_flags & MF_WAIT && diff --git a/fs_mgr/fs_mgr_fstab.cpp b/fs_mgr/fs_mgr_fstab.cpp index e89c91c6a..410bf6b97 100644 --- a/fs_mgr/fs_mgr_fstab.cpp +++ b/fs_mgr/fs_mgr_fstab.cpp @@ -42,17 +42,17 @@ struct fs_mgr_flag_values { char* key_dir; char *verity_loc; char *sysfs_path; - long long part_length; + off64_t part_length; char *label; int partnum; int swap_prio; int max_comp_streams; - unsigned int zram_size; - uint64_t reserved_size; + off64_t zram_size; + off64_t reserved_size; unsigned int file_contents_mode; unsigned int file_names_mode; - unsigned int erase_blk_size; - unsigned int logical_blk_size; + off64_t erase_blk_size; + off64_t logical_blk_size; }; struct flag_list { @@ -160,9 +160,8 @@ static const char *flag_to_encryption_mode(const struct flag_list *list, return nullptr; } -static uint64_t calculate_zram_size(unsigned int percentage) -{ - uint64_t total; +static off64_t calculate_zram_size(unsigned int percentage) { + off64_t total; total = sysconf(_SC_PHYS_PAGES); total *= percentage; @@ -173,10 +172,9 @@ static uint64_t calculate_zram_size(unsigned int percentage) return total; } -static uint64_t parse_size(const char *arg) -{ +static off64_t parse_size(const char* arg) { char *endptr; - uint64_t size = strtoull(arg, &endptr, 10); + off64_t size = strtoll(arg, &endptr, 10); if (*endptr == 'k' || *endptr == 'K') size *= 1024LL; else if (*endptr == 'm' || *endptr == 'M') @@ -339,7 +337,7 @@ static int parse_flags(char *flags, struct flag_list *fl, * erase block size. Get it, check that it is a power of 2 and * at least 4096, and return it. */ - auto val = strtoul(arg, NULL, 0); + auto val = strtoll(arg, nullptr, 0); if (val >= 4096 && (val & (val - 1)) == 0) flag_vals->erase_blk_size = val; } else if (flag == MF_LOGICALBLKSIZE) { @@ -347,7 +345,7 @@ static int parse_flags(char *flags, struct flag_list *fl, * logical block size. Get it, check that it is a power of 2 and * at least 4096, and return it. */ - auto val = strtoul(arg, NULL, 0); + auto val = strtoll(arg, nullptr, 0); if (val >= 4096 && (val & (val - 1)) == 0) flag_vals->logical_blk_size = val; } else if (flag == MF_SYSFS) { diff --git a/fs_mgr/include_fstab/fstab/fstab.h b/fs_mgr/include_fstab/fstab/fstab.h index bb4051148..ca52a9834 100644 --- a/fs_mgr/include_fstab/fstab/fstab.h +++ b/fs_mgr/include_fstab/fstab/fstab.h @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -46,17 +47,17 @@ struct fstab_rec { char* key_loc; char* key_dir; char* verity_loc; - long long length; + off64_t length; char* label; int partnum; int swap_prio; int max_comp_streams; - unsigned int zram_size; - uint64_t reserved_size; - unsigned int file_contents_mode; - unsigned int file_names_mode; - unsigned int erase_blk_size; - unsigned int logical_blk_size; + off64_t zram_size; + off64_t reserved_size; + off64_t file_contents_mode; + off64_t file_names_mode; + off64_t erase_blk_size; + off64_t logical_blk_size; char* sysfs_path; };