# Android fstab file.
# The filesystem that contains the filesystem checker binary (typically /system) cannot
# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK

#TODO: Add 'check' as fs_mgr_flags with data partition.
# Currently we dont have e2fsck compiled. So fs check would failed.

#<src>                                     <mnt_point>  <type>  <mnt_flags and options>                                                  <fs_mgr_flags>
/dev/block/platform/7824900.sdhci/by-name/system       /system      ext4    ro,errors=panic                                                          wait
/dev/block/platform/7824900.sdhci/by-name/userdata     /data        ext4    noatime,nosuid,nodev,noauto_da_alloc,journal_async_commit,errors=panic   wait,check,encryptable=footer,length=-16384
/dev/block/platform/7824900.sdhci/by-name/cache        /cache       ext4    noatime,nosuid,nodev,noauto_da_alloc,journal_async_commit,errors=panic   wait,check
/dev/block/platform/7824900.sdhci/by-name/efs          /efs         ext4    noatime,nosuid,nodev,noauto_da_alloc,journal_async_commit,errors=panic   wait
/dev/block/platform/7824900.sdhci/by-name/persist      /persist     ext4    nosuid,nodev,data=ordered,nodelalloc                                     wait
/dev/block/platform/7824900.sdhci/by-name/modem        /modem       vfat    ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0    wait
/dev/block/platform/7824900.sdhci/by-name/boot         /boot        emmc    defaults   defaults
/dev/block/platform/7824900.sdhci/by-name/recovery     /recovery    emmc    defaults   defaults

# VOLD
/dev/block/platform/7864900.sdhci/mmcblk1p1 auto         auto    defaults   voldmanaged=extSdCard:auto,noemulatedsd