# 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/msm_sdcc.1/by-name/system         /system            ext4    ro,barrier=1,discard                                                                  wait,recoveryonly
/dev/block/platform/msm_sdcc.1/by-name/userdata       /data              ext4    noatime,nosuid,nodev,barrier=1,noauto_da_alloc,discard                                wait,check,encryptable=footer
/dev/block/platform/msm_sdcc.1/by-name/cache          /cache             ext4    noatime,nosuid,nodev,barrier=1,data=ordered,noauto_da_alloc,errors=panic              wait,check,formattable
/dev/block/platform/msm_sdcc.1/by-name/persist        /persist           ext4    noatime,nosuid,nodev,barrier=1,data=ordered,nodelalloc,nomblk_io_submit,errors=panic  wait,check
/dev/block/platform/msm_sdcc.1/by-name/recovery       /recovery          emmc    defaults                                                                              defaults
/dev/block/platform/msm_sdcc.1/by-name/pad            /misc              emmc    defaults                                                                              defaults

/devices/msm_sdcc.2/mmc_host*                         /storage/sdcard1   vfat    nosuid,nodev                                                                          wait,voldmanaged=sdcard1:auto,encryptable=footer
/devices/platform/xhci-hcd/usb*                       /storage/usbotg    vfat    nosuid,nodev                                                                          wait,voldmanaged=usbotg:auto
