Lines Matching refs:fstab

300 struct fstab *fs_mgr_read_fstab(const char *fstab_path)
308 struct fstab *fstab;
339 ERROR("No entries found in fstab\n");
343 /* Allocate and init the fstab structure */
344 fstab = calloc(1, sizeof(struct fstab));
345 fstab->num_entries = entries;
346 fstab->fstab_filename = strdup(fstab_path);
347 fstab->recs = calloc(fstab->num_entries, sizeof(struct fstab_rec));
381 fstab->recs[cnt].blk_device = strdup(p);
387 fstab->recs[cnt].mount_point = strdup(p);
393 fstab->recs[cnt].fs_type = strdup(p);
400 fstab->recs[cnt].flags = parse_flags(p, mount_flags, NULL,
405 fstab->recs[cnt].fs_options = strdup(tmp_fs_options);
407 fstab->recs[cnt].fs_options = NULL;
414 fstab->recs[cnt].fs_mgr_flags = parse_flags(p, fs_mgr_flags,
416 fstab->recs[cnt].key_loc = flag_vals.key_loc;
417 fstab->recs[cnt].length = flag_vals.part_length;
418 fstab->recs[cnt].label = flag_vals.label;
419 fstab->recs[cnt].partnum = flag_vals.partnum;
420 fstab->recs[cnt].swap_prio = flag_vals.swap_prio;
421 fstab->recs[cnt].zram_size = flag_vals.zram_size;
426 return fstab;
429 void fs_mgr_free_fstab(struct fstab *fstab)
433 if (!fstab) {
437 for (i = 0; i < fstab->num_entries; i++) {
439 free(fstab->recs[i].blk_device);
440 free(fstab->recs[i].mount_point);
441 free(fstab->recs[i].fs_type);
442 free(fstab->recs[i].fs_options);
443 free(fstab->recs[i].key_loc);
444 free(fstab->recs[i].label);
449 free(fstab->recs);
451 /* Free the fstab filename */
452 free(fstab->fstab_filename);
454 /* Free fstab */
455 free(fstab);
573 int fs_mgr_mount_all(struct fstab *fstab)
580 if (!fstab) {
584 for (i = 0; i < fstab->num_entries; i++) {
586 if (fstab->recs[i].fs_mgr_flags & (MF_VOLDMANAGED | MF_RECOVERYONLY)) {
591 if (!strcmp(fstab->recs[i].fs_type, "swap") ||
592 !strcmp(fstab->recs[i].fs_type, "emmc") ||
593 !strcmp(fstab->recs[i].fs_type, "mtd")) {
597 if (fstab->recs[i].fs_mgr_flags & MF_WAIT) {
598 wait_for_file(fstab->recs[i].blk_device, WAIT_TIMEOUT);
601 if (fstab->recs[i].fs_mgr_flags & MF_CHECK) {
602 check_fs(fstab->recs[i].blk_device, fstab->recs[i].fs_type,
603 fstab->recs[i].mount_point);
606 if (fstab->recs[i].fs_mgr_flags & MF_VERIFY) {
607 if (fs_mgr_setup_verity(&fstab->recs[i]) < 0) {
613 mret = __mount(fstab->recs[i].blk_device, fstab->recs[i].mount_point,
614 fstab->recs[i].fs_type, fstab->recs[i].flags,
615 fstab->recs[i].fs_options);
623 if ((fstab->recs[i].fs_mgr_flags & MF_CRYPT) &&
624 !partition_wiped(fstab->recs[i].blk_device)) {
628 if (mount("tmpfs", fstab->recs[i].mount_point, "tmpfs",
631 fstab->recs[i].mount_point);
637 fstab->recs[i].blk_device, fstab->recs[i].mount_point);
655 int fs_mgr_do_mount(struct fstab *fstab, char *n_name, char *n_blk_device,
662 if (!fstab) {
666 for (i = 0; i < fstab->num_entries; i++) {
667 if (!fs_match(fstab->recs[i].mount_point, n_name)) {
673 if (!strcmp(fstab->recs[i].fs_type, "swap") ||
674 !strcmp(fstab->recs[i].fs_type, "emmc") ||
675 !strcmp(fstab->recs[i].fs_type, "mtd")) {
677 fstab->recs[i].fs_type, n_blk_device);
682 if (fstab->recs[i].fs_mgr_flags & MF_WAIT) {
686 if (fstab->recs[i].fs_mgr_flags & MF_CHECK) {
687 check_fs(n_blk_device, fstab->recs[i].fs_type,
688 fstab->recs[i].mount_point);
691 if (fstab->recs[i].fs_mgr_flags & MF_VERIFY) {
692 if (fs_mgr_setup_verity(&fstab->recs[i]) < 0) {
702 m = fstab->recs[i].mount_point;
704 if (__mount(n_blk_device, m, fstab->recs[i].fs_type,
705 fstab->recs[i].flags, fstab->recs[i].fs_options)) {
716 ERROR("Cannot find mount point %s in fstab\n", fstab->recs[i].mount_point);
741 int fs_mgr_unmount_all(struct fstab *fstab)
746 if (!fstab) {
750 while (fstab->recs[i].blk_device) {
751 if (umount(fstab->recs[i].mount_point)) {
752 ERROR("Cannot unmount filesystem at %s\n", fstab->recs[i].mount_point);
764 int fs_mgr_swapon_all(struct fstab *fstab)
776 if (!fstab) {
780 for (i = 0; i < fstab->num_entries; i++) {
782 if (strcmp(fstab->recs[i].fs_type, "swap")) {
786 if (fstab->recs[i].zram_size > 0) {
800 fprintf(zram_fp, "%d\n", fstab->recs[i].zram_size);
804 if (fstab->recs[i].fs_mgr_flags & MF_WAIT) {
805 wait_for_file(fstab->recs[i].blk_device, WAIT_TIMEOUT);
809 mkswap_argv[1] = fstab->recs[i].blk_device;
813 ERROR("mkswap failed for %s\n", fstab->recs[i].blk_device);
818 /* If -1, then no priority was specified in fstab, so don't set
820 if (fstab->recs[i].swap_prio >= 0) {
821 flags = (fstab->recs[i].swap_prio << SWAP_FLAG_PRIO_SHIFT) &
827 err = swapon(fstab->recs[i].blk_device, flags);
829 ERROR("swapon failed for %s\n", fstab->recs[i].blk_device);
842 int fs_mgr_get_crypt_info(struct fstab *fstab, char *key_loc, char *real_blk_device, int size)
846 if (!fstab) {
858 for (i = 0; i < fstab->num_entries; i++) {
860 if (fstab->recs[i].fs_mgr_flags & MF_VOLDMANAGED) {
863 if (!(fstab->recs[i].fs_mgr_flags & MF_CRYPT)) {
869 strlcpy(key_loc, fstab->recs[i].key_loc, size);
872 strlcpy(real_blk_device, fstab->recs[i].blk_device, size);
880 /* Add an entry to the fstab, and return 0 on success or -1 on error */
881 int fs_mgr_add_entry(struct fstab *fstab,
886 int n = fstab->num_entries;
889 realloc(fstab->recs, sizeof(struct fstab_rec) * (n + 1));
902 /* Update the fstab struct */
903 fstab->recs = new_fstab_recs;
904 fstab->num_entries++;
909 struct fstab_rec *fs_mgr_get_entry_for_mount_point(struct fstab *fstab, const char *path)
913 if (!fstab) {
917 for (i = 0; i < fstab->num_entries; i++) {
918 int len = strlen(fstab->recs[i].mount_point);
919 if (strncmp(path, fstab->recs[i].mount_point, len) == 0 &&
921 return &fstab->recs[i];
928 int fs_mgr_is_voldmanaged(struct fstab_rec *fstab)
930 return fstab->fs_mgr_flags & MF_VOLDMANAGED;
933 int fs_mgr_is_nonremovable(struct fstab_rec *fstab)
935 return fstab->fs_mgr_flags & MF_NONREMOVABLE;
938 int fs_mgr_is_encryptable(struct fstab_rec *fstab)
940 return fstab->fs_mgr_flags & MF_CRYPT;
943 int fs_mgr_is_noemulatedsd(struct fstab_rec *fstab)
945 return fstab->fs_mgr_flags & MF_NOEMULATEDSD;