Add nofail fstab option
This option allows fs_mgr to ignore mount errors on an optional partition to allow booting to continue. Bug: 28071890 Change-Id: I71a2b3c1c573297cab18884b4c4bd7c27ced2901
This commit is contained in:
parent
9bf0b815ad
commit
d38e3c522c
4 changed files with 20 additions and 5 deletions
|
|
@ -626,11 +626,18 @@ int fs_mgr_mount_all(struct fstab *fstab)
|
||||||
}
|
}
|
||||||
encryptable = FS_MGR_MNTALL_DEV_MIGHT_BE_ENCRYPTED;
|
encryptable = FS_MGR_MNTALL_DEV_MIGHT_BE_ENCRYPTED;
|
||||||
} else {
|
} else {
|
||||||
ERROR("Failed to mount an un-encryptable or wiped partition on"
|
if (fs_mgr_is_nofail(&fstab->recs[attempted_idx])) {
|
||||||
"%s at %s options: %s error: %s\n",
|
ERROR("Ignoring failure to mount an un-encryptable or wiped partition on"
|
||||||
fstab->recs[attempted_idx].blk_device, fstab->recs[attempted_idx].mount_point,
|
"%s at %s options: %s error: %s\n",
|
||||||
fstab->recs[attempted_idx].fs_options, strerror(mount_errno));
|
fstab->recs[attempted_idx].blk_device, fstab->recs[attempted_idx].mount_point,
|
||||||
++error_count;
|
fstab->recs[attempted_idx].fs_options, strerror(mount_errno));
|
||||||
|
} else {
|
||||||
|
ERROR("Failed to mount an un-encryptable or wiped partition on"
|
||||||
|
"%s at %s options: %s error: %s\n",
|
||||||
|
fstab->recs[attempted_idx].blk_device, fstab->recs[attempted_idx].mount_point,
|
||||||
|
fstab->recs[attempted_idx].fs_options, strerror(mount_errno));
|
||||||
|
++error_count;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@ static struct flag_list fs_mgr_flags[] = {
|
||||||
{ "noemulatedsd", MF_NOEMULATEDSD },
|
{ "noemulatedsd", MF_NOEMULATEDSD },
|
||||||
{ "notrim", MF_NOTRIM },
|
{ "notrim", MF_NOTRIM },
|
||||||
{ "formattable", MF_FORMATTABLE },
|
{ "formattable", MF_FORMATTABLE },
|
||||||
|
{ "nofail", MF_NOFAIL },
|
||||||
{ "defaults", 0 },
|
{ "defaults", 0 },
|
||||||
{ 0, 0 },
|
{ 0, 0 },
|
||||||
};
|
};
|
||||||
|
|
@ -480,3 +481,8 @@ int fs_mgr_is_formattable(struct fstab_rec *fstab)
|
||||||
{
|
{
|
||||||
return fstab->fs_mgr_flags & (MF_FORMATTABLE);
|
return fstab->fs_mgr_flags & (MF_FORMATTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int fs_mgr_is_nofail(struct fstab_rec *fstab)
|
||||||
|
{
|
||||||
|
return fstab->fs_mgr_flags & MF_NOFAIL;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,7 @@
|
||||||
#define MF_NOTRIM 0x1000
|
#define MF_NOTRIM 0x1000
|
||||||
#define MF_FILEENCRYPTION 0x2000
|
#define MF_FILEENCRYPTION 0x2000
|
||||||
#define MF_FORMATTABLE 0x4000
|
#define MF_FORMATTABLE 0x4000
|
||||||
|
#define MF_NOFAIL 0x40000
|
||||||
|
|
||||||
#define DM_BUF_SIZE 4096
|
#define DM_BUF_SIZE 4096
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,7 @@ int fs_mgr_is_file_encrypted(const struct fstab_rec *fstab);
|
||||||
int fs_mgr_is_noemulatedsd(const struct fstab_rec *fstab);
|
int fs_mgr_is_noemulatedsd(const struct fstab_rec *fstab);
|
||||||
int fs_mgr_is_notrim(struct fstab_rec *fstab);
|
int fs_mgr_is_notrim(struct fstab_rec *fstab);
|
||||||
int fs_mgr_is_formattable(struct fstab_rec *fstab);
|
int fs_mgr_is_formattable(struct fstab_rec *fstab);
|
||||||
|
int fs_mgr_is_nofail(struct fstab_rec *fstab);
|
||||||
int fs_mgr_swapon_all(struct fstab *fstab);
|
int fs_mgr_swapon_all(struct fstab *fstab);
|
||||||
|
|
||||||
int fs_mgr_do_format(struct fstab_rec *fstab);
|
int fs_mgr_do_format(struct fstab_rec *fstab);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue