From eadb7525b0700a6390bb99c1f7b7493a93f0d8ac Mon Sep 17 00:00:00 2001 From: oxmc <67136658+oxmc@users.noreply.github.com> Date: Sun, 7 Jun 2026 02:53:43 -0700 Subject: [PATCH] fstab: make discard opt-in via BOARD_STORAGE_SUPPORTS_DISCARD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add fstab.rpi4.discard (metadata with discard) alongside the default fstab.rpi4 (no discard). device.mk selects between them based on BOARD_STORAGE_SUPPORTS_DISCARD — set true for SD cards or SSDs that actually support TRIM, leave unset for USB flash drives. --- device.mk | 14 ++++++++++++-- ramdisk/fstab.rpi4.discard | 12 ++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 ramdisk/fstab.rpi4.discard diff --git a/device.mk b/device.mk index 4403d3f..246ac80 100644 --- a/device.mk +++ b/device.mk @@ -140,9 +140,19 @@ PRODUCT_PACKAGES += \ com.android.hardware.power # Ramdisk +# Set BOARD_STORAGE_SUPPORTS_DISCARD := true in BoardConfig.mk (or a device +# variant makefile) to enable TRIM on the metadata partition. Only do this if +# your storage device actually supports discard (SD cards, SSDs) — USB flash +# drives typically don't, and requesting discard on them stalls jbd2. +ifeq ($(BOARD_STORAGE_SUPPORTS_DISCARD),true) +_FSTAB_SRC := $(DEVICE_PATH)/ramdisk/fstab.rpi4.discard +else +_FSTAB_SRC := $(DEVICE_PATH)/ramdisk/fstab.rpi4 +endif + PRODUCT_COPY_FILES += \ - $(DEVICE_PATH)/ramdisk/fstab.rpi4:$(TARGET_COPY_OUT_RAMDISK)/fstab.rpi4 \ - $(DEVICE_PATH)/ramdisk/fstab.rpi4:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.rpi4 \ + $(_FSTAB_SRC):$(TARGET_COPY_OUT_RAMDISK)/fstab.rpi4 \ + $(_FSTAB_SRC):$(TARGET_COPY_OUT_VENDOR)/etc/fstab.rpi4 \ $(DEVICE_PATH)/ramdisk/init.rpi4.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.rpi4.rc \ $(DEVICE_PATH)/ramdisk/init.rpi4.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.rpi4.usb.rc \ $(DEVICE_PATH)/ramdisk/ueventd.rpi4.rc:$(TARGET_COPY_OUT_VENDOR)/etc/ueventd.rc diff --git a/ramdisk/fstab.rpi4.discard b/ramdisk/fstab.rpi4.discard new file mode 100644 index 0000000..30f97f0 --- /dev/null +++ b/ramdisk/fstab.rpi4.discard @@ -0,0 +1,12 @@ +# 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 + +# +/dev/block/by-name/system /system ext4 ro,barrier=1 wait,first_stage_mount +/dev/block/by-name/system_ext /system_ext ext4 ro,barrier=1 wait,first_stage_mount +/dev/block/by-name/vendor /vendor ext4 ro,barrier=1 wait,first_stage_mount +/dev/block/by-name/metadata /metadata ext4 noatime,nosuid,nodev,discard wait,formattable,first_stage_mount +/dev/block/by-name/userdata /data ext4 noatime,nosuid,nodev,nomblk_io_submit,errors=panic wait,check,formattable,quota +/devices/platform/scb/*.pcie/*/*/*/usb* auto auto defaults voldmanaged=usb:auto +/devices/platform/soc/*.usb/usb* auto auto defaults voldmanaged=usb:auto