# 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
#
#<src>                                                   <mnt_point>                 <type>  <mnt_flags and options>  <fs_mgr_flags>
system                                                   /system                     erofs   ro                       wait,slotselect,avb=vbmeta_system,logical,first_stage_mount,readahead_size_kb=128
system_dlkm                                              /system_dlkm                erofs   ro                       wait,slotselect,avb=vbmeta_system,logical,first_stage_mount,readahead_size_kb=128
system_ext                                               /system_ext                 erofs   ro                       wait,slotselect,avb=vbmeta_system,logical,first_stage_mount,readahead_size_kb=128
product                                                  /product                    erofs   ro                       wait,slotselect,avb=vbmeta_system,logical,first_stage_mount,readahead_size_kb=128
vendor                                                   /vendor                     erofs   ro                       wait,slotselect,avb=vbmeta_vendor,logical,first_stage_mount,readahead_size_kb=128
vendor_dlkm                                              /vendor_dlkm                erofs   ro                       wait,slotselect,avb=vbmeta,logical,first_stage_mount
/dev/block/platform/14700000.ufs/by-name/boot            /boot                       emmc    defaults                 slotselect,avb=boot,first_stage_mount
/dev/block/platform/14700000.ufs/by-name/init_boot       /init_boot                  emmc    defaults                 slotselect,avb=init_boot,first_stage_mount
/dev/block/platform/14700000.ufs/by-name/efs             /mnt/vendor/efs             f2fs    noatime,sync             wait,check,formattable
/dev/block/platform/14700000.ufs/by-name/efs_backup      /mnt/vendor/efs_backup      f2fs    noatime,sync             wait,check,formattable
/dev/block/platform/14700000.ufs/by-name/modem_userdata  /mnt/vendor/modem_userdata  f2fs    noatime,sync             wait,check,formattable
/dev/block/platform/14700000.ufs/by-name/misc            /misc                       emmc    defaults                 wait
/dev/block/platform/14700000.ufs/by-name/metadata        /metadata                   f2fs    noatime,nosuid,nodev,sync  wait,check,formattable,first_stage_mount
#/dev/block/platform/14700000.ufs/by-name/pvmfw           /pvmfw                      emmc    defaults                 wait,slotselect,avb=pvmfw,first_stage_mount
/dev/block/platform/14700000.ufs/by-name/userdata        /data                       f2fs    noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier,inlinecrypt,compress_extension=apk,compress_extension=apex,compress_extension=so,compress_extension=vdex,compress_extension=odex,atgc,checkpoint_merge,compress_cache    latemount,wait,check,quota,formattable,sysfs_path=/dev/sys/block/bootdevice,checkpoint=fs,reservedsize=128M,fileencryption=@fileencryption@,metadata_encryption=@metadata_encryption@,keydirectory=/metadata/vold/metadata_encryption,fscompress,readahead_size_kb=128
/dev/block/platform/14700000.ufs/by-name/vbmeta          /vbmeta                     emmc    defaults                 slotselect,first_stage_mount
/devices/platform/11210000.usb*                          auto                        vfat    defaults                 voldmanaged=usb:auto
