# 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,avb_keys=/avb/q-gsi.avbpubkey:/avb/r-gsi.avbpubkey:/avb/s-gsi.avbpubkey
system                                           /system               erofs   ro                                                  wait,avb=vbmeta_system,logical,first_stage_mount,avb_keys=/avb/q-gsi.avbpubkey:/avb/r-gsi.avbpubkey:/avb/s-gsi.avbpubkey
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,checkpoint=block,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,checkpoint=fs,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
