# 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>
# Core Partitions (Dynamic Partitions)
system                                           /system               ext4    ro                                                  wait,avb=vbmeta_system,logical,first_stage_mount
system                                           /system               erofs   ro                                                  wait,avb=vbmeta_system,logical,first_stage_mount
vendor                                           /vendor               ext4    ro                                                  wait,avb,logical,first_stage_mount
vendor                                           /vendor               erofs   ro                                                  wait,avb,logical,first_stage_mount
product                                          /product              ext4    ro                                                  wait,logical,first_stage_mount
product                                          /product              erofs   ro                                                  wait,logical,first_stage_mount
odm                                              /odm                  ext4    ro                                                  wait,logical,first_stage_mount
odm                                              /odm                  erofs   ro                                                  wait,logical,first_stage_mount
system_ext                                       /system_ext           ext4    ro                                                  wait,logical,first_stage_mount
system_ext                                       /system_ext           erofs   ro                                                  wait,logical,first_stage_mount

# Core Partitions
/dev/block/platform/bootdevice/by-name/md_udc    /metadata             ext4    noatime,nosuid,nodev,discard                        wait,formattable,first_stage_mount
/dev/block/platform/bootdevice/by-name/cache     /cache                ext4    noatime,nosuid,nodev,noauto_da_alloc,discard        wait,check,formattable
/dev/block/platform/bootdevice/by-name/userdata /data                  ext4    noatime,nosuid,nodev,noauto_da_alloc,errors=panic,inlinecrypt latemount,wait,check,formattable,quota,reservedsize=128m,fileencryption=aes-256-xts
/dev/block/platform/bootdevice/by-name/userdata  /data                 f2fs    noatime,nosuid,nodev,discard,noflush_merge,reserve_root=134217,resgid=1065,fsync_mode=nobarrier,inlinecrypt latemount,wait,check,formattable,quota,reservedsize=128m,fileencryption=aes-256-xts
/dev/block/platform/bootdevice/by-name/recovery  /recovery             emmc    defaults                                            first_stage_mount,nofail
/dev/block/platform/bootdevice/by-name/boot      /boot                 emmc    defaults                                            first_stage_mount,nofail
/dev/block/platform/bootdevice/by-name/dtbo      /dtbo                 emmc    defaults                                            defaults
/dev/block/platform/bootdevice/by-name/vbmeta_system   /vbmeta_system  emmc    defaults                                            first_stage_mount,nofail,avb=vbmeta
/dev/block/platform/bootdevice/by-name/persist   /mnt/vendor/persist   ext4    noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc   wait,check,formattable

# Non-Volatile (RAM | DATA | CFG)
/dev/block/platform/bootdevice/by-name/nvdata    /mnt/vendor/nvdata    ext4    noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc   wait,check,formattable
/dev/block/platform/bootdevice/by-name/nvcfg     /mnt/vendor/nvcfg     ext4    noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc   wait,check,formattable

# Subscriber Identification Module (SIM)
/dev/block/platform/bootdevice/by-name/protect1  /mnt/vendor/protect_f ext4    noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc   wait,check,formattable
/dev/block/platform/bootdevice/by-name/protect2  /mnt/vendor/protect_s ext4    noatime,nosuid,nodev,noauto_da_alloc,commit=1,nodelalloc   wait,check,formattable

# Misc
/dev/block/platform/bootdevice/by-name/misc      /misc                 emmc    defaults                                            defaults
/dev/block/platform/bootdevice/by-name/logo      /logo                 emmc    defaults                                            defaults

# External-Devices (SDCARD | OTG)
/devices/platform/externdevice*                  auto                  auto    defaults                                            voldmanaged=sdcard1:auto,encryptable=userdata
/devices/platform/usb3_xhci*                     auto                  vfat    defaults                                            voldmanaged=usbotg:auto

# Swap
/dev/block/zram0                                 none                  swap    defaults                                            zramsize=55%,max_comp_streams=8,zram_backingdev_size=512M
