Home | History | Annotate | Download | only in fs_mgr

Lines Matching refs:fstab

389     std::string file_name = get_android_dt_dir() + "/fstab/compatible";
391 if (dt_value == "android,fstab") {
400 std::string fstab;
402 return fstab;
405 std::string fstabdir_name = get_android_dt_dir() + "/fstab";
407 if (!fstabdir) return fstab;
430 fstab.clear();
439 fstab.clear();
447 fstab.clear();
455 fstab.clear();
460 fstab += android::base::Join(fstab_entry, " ");
461 fstab += '\n';
464 return fstab;
479 static struct fstab *fs_mgr_read_fstab_file(FILE *fstab_file)
487 struct fstab *fstab = NULL;
510 LERROR << "No entries found in fstab";
514 /* Allocate and init the fstab structure */
515 fstab = static_cast<struct fstab *>(calloc(1, sizeof(struct fstab)));
516 fstab->num_entries = entries;
517 fstab->recs = static_cast<struct fstab_rec *>(
518 calloc(fstab->num_entries, sizeof(struct fstab_rec)));
551 fstab->recs[cnt].blk_device = strdup(p);
557 fstab->recs[cnt].mount_point = strdup(p);
563 fstab->recs[cnt].fs_type = strdup(p);
570 fstab->recs[cnt].flags = parse_flags(p, mount_flags, NULL,
575 fstab->recs[cnt].fs_options = strdup(tmp_fs_options);
577 fstab->recs[cnt].fs_options = NULL;
584 fstab->recs[cnt].fs_mgr_flags = parse_flags(p, fs_mgr_flags,
586 fstab->recs[cnt].key_loc = flag_vals.key_loc;
587 fstab->recs[cnt].key_dir = flag_vals.key_dir;
588 fstab->recs[cnt].verity_loc = flag_vals.verity_loc;
589 fstab->recs[cnt].length = flag_vals.part_length;
590 fstab->recs[cnt].label = flag_vals.label;
591 fstab->recs[cnt].partnum = flag_vals.partnum;
592 fstab->recs[cnt].swap_prio = flag_vals.swap_prio;
593 fstab->recs[cnt].max_comp_streams = flag_vals.max_comp_streams;
594 fstab->recs[cnt].zram_size = flag_vals.zram_size;
595 fstab->recs[cnt].reserved_size = flag_vals.reserved_size;
596 fstab->recs[cnt].file_contents_mode = flag_vals.file_contents_mode;
597 fstab->recs[cnt].file_names_mode = flag_vals.file_names_mode;
598 fstab->recs[cnt].erase_blk_size = flag_vals.erase_blk_size;
599 fstab->recs[cnt].logical_blk_size = flag_vals.logical_blk_size;
603 if (!fs_mgr_update_for_slotselect(fstab)) {
608 return fstab;
612 if (fstab)
613 fs_mgr_free_fstab(fstab);
617 /* merges fstab entries from both a and b, then returns the merged result.
621 static struct fstab *in_place_merge(struct fstab *a, struct fstab *b)
630 LERROR << __FUNCTION__ << "(): failed to allocate fstab recs";
652 struct fstab *fs_mgr_read_fstab(const char *fstab_path)
655 struct fstab *fstab;
663 fstab = fs_mgr_read_fstab_file(fstab_file);
664 if (fstab) {
665 fstab->fstab_filename = strdup(fstab_path);
667 LERROR << __FUNCTION__ << "(): failed to load fstab from : '" << fstab_path << "'";
671 return fstab;
674 /* Returns fstab entries parsed from the device tree if they
677 struct fstab *fs_mgr_read_fstab_dt()
681 LINFO << __FUNCTION__ << "(): failed to read fstab from dt";
689 PERROR << __FUNCTION__ << "(): failed to create a file stream for fstab dt";
693 struct fstab *fstab = fs_mgr_read_fstab_file(fstab_file.get());
694 if (!fstab) {
695 LERROR << __FUNCTION__ << "(): failed to load fstab from kernel:"
699 return fstab;
703 * tries to load default fstab.<hardware> file from /odm/etc, /vendor/etc
704 * or /. loads the first one found and also combines fstab entries passed
707 struct fstab *fs_mgr_read_fstab_default()
712 // Use different fstab paths for normal boot and recovery boot, respectively
714 default_fstab = "/etc/recovery.fstab";
716 for (const char *prefix : {"/odm/etc/fstab.","/vendor/etc/fstab.", "/fstab."}) {
724 // combines fstab entries passed in from device tree with
726 struct fstab *fstab_dt = fs_mgr_read_fstab_dt();
727 struct fstab *fstab = fs_mgr_read_fstab(default_fstab.c_str());
729 return in_place_merge(fstab_dt, fstab);
732 void fs_mgr_free_fstab(struct fstab *fstab)
736 if (!fstab) {
740 for (i = 0; i < fstab->num_entries; i++) {
742 free(fstab->recs[i].blk_device);
743 free(fstab->recs[i].mount_point);
744 free(fstab->recs[i].fs_type);
745 free(fstab->recs[i].fs_options);
746 free(fstab->recs[i].key_loc);
747 free(fstab->recs[i].key_dir);
748 free(fstab->recs[i].label);
752 free(fstab->recs);
754 /* Free the fstab filename */
755 free(fstab->fstab_filename);
757 /* Free fstab */
758 free(fstab);
761 /* Add an entry to the fstab, and return 0 on success or -1 on error */
762 int fs_mgr_add_entry(struct fstab *fstab,
767 int n = fstab->num_entries;
770 realloc(fstab->recs, sizeof(struct fstab_rec) * (n + 1));
783 /* Update the fstab struct */
784 fstab->recs = new_fstab_recs;
785 fstab->num_entries++;
794 struct fstab_rec *fs_mgr_get_entry_for_mount_point_after(struct fstab_rec *start_rec, struct fstab *fstab, const char *path)
797 if (!fstab) {
802 for (i = 0; i < fstab->num_entries; i++) {
803 if (&fstab->recs[i] == start_rec) {
811 for (; i < fstab->num_entries; i++) {
812 int len = strlen(fstab->recs[i].mount_point);
813 if (strncmp(path, fstab->recs[i].mount_point, len) == 0 &&
815 return &fstab->recs[i];
826 struct fstab_rec *fs_mgr_get_entry_for_mount_point(struct fstab *fstab, const char *path)
828 return fs_mgr_get_entry_for_mount_point_after(NULL, fstab, path);
831 int fs_mgr_is_voldmanaged(const struct fstab_rec *fstab)
833 return fstab->fs_mgr_flags & MF_VOLDMANAGED;
836 int fs_mgr_is_nonremovable(const struct fstab_rec *fstab)
838 return fstab->fs_mgr_flags & MF_NONREMOVABLE;
841 int fs_mgr_is_verified(const struct fstab_rec *fstab)
843 return fstab->fs_mgr_flags & MF_VERIFY;
846 int fs_mgr_is_avb(const struct fstab_rec *fstab)
848 return fstab->fs_mgr_flags & MF_AVB;
851 int fs_mgr_is_verifyatboot(const struct fstab_rec *fstab)
853 return fstab->fs_mgr_flags & MF_VERIFYATBOOT;
856 int fs_mgr_is_encryptable(const struct fstab_rec *fstab)
858 return fstab->fs_mgr_flags & (MF_CRYPT | MF_FORCECRYPT | MF_FORCEFDEORFBE);
861 int fs_mgr_is_file_encrypted(const struct fstab_rec *fstab)
863 return fstab->fs_mgr_flags & MF_FILEENCRYPTION;
866 void fs_mgr_get_file_encryption_modes(const struct fstab_rec *fstab,
871 fstab->file_contents_mode);
873 fstab->file_names_mode);
876 int fs_mgr_is_convertible_to_fbe(const struct fstab_rec *fstab)
878 return fstab->fs_mgr_flags & MF_FORCEFDEORFBE;
881 int fs_mgr_is_noemulatedsd(const struct fstab_rec *fstab)
883 return fstab->fs_mgr_flags & MF_NOEMULATEDSD;
886 int fs_mgr_is_notrim(const struct fstab_rec* fstab) {
887 return fstab->fs_mgr_flags & MF_NOTRIM;
890 int fs_mgr_is_formattable(const struct fstab_rec* fstab) {
891 return fstab->fs_mgr_flags & (MF_FORMATTABLE);
894 int fs_mgr_is_slotselect(const struct fstab_rec* fstab) {
895 return fstab->fs_mgr_flags & MF_SLOTSELECT;
898 int fs_mgr_is_nofail(const struct fstab_rec* fstab) {
899 return fstab->fs_mgr_flags & MF_NOFAIL;
902 int fs_mgr_is_latemount(const struct fstab_rec* fstab) {
903 return fstab->fs_mgr_flags & MF_LATEMOUNT;
906 int fs_mgr_is_quota(const struct fstab_rec* fstab) {
907 return fstab->fs_mgr_flags & MF_QUOTA;