#!/bin/sh
# /lib/preinit/79-format-rootfs-data
# Automatically format rootfs_data partition if empty

ROOTFS_DATA="/dev/mmcblk0p15"

has_valid_ext4() {
	# Check for ext4 magic number (0xEF53) at offset 0x438
	local magic
	magic=$(dd if="$1" bs=1 skip=1080 count=2 2>/dev/null | hexdump -e '1/2 "%04x"')
	[ "$magic" = "ef53" ]
}

preinit_format_rootfs_data() {
	[ -b "$ROOTFS_DATA" ] || return 0
	
	if has_valid_ext4 "$ROOTFS_DATA"; then
		echo "rootfs_data: valid ext4 filesystem detected" > /dev/kmsg
		return 0
	fi
	
	echo "rootfs_data: no valid filesystem, formatting..." > /dev/kmsg
	
	if mkfs.ext4 -F -L rootfs_data -O ^has_journal "$ROOTFS_DATA" >/dev/null 2>&1; then
		echo "rootfs_data: format complete, rebooting..." > /dev/kmsg
		sync
		sleep 1
		reboot -f
	else
		echo "rootfs_data: ERROR - format failed" > /dev/kmsg
	fi
}

boot_hook_add preinit_mount_root preinit_format_rootfs_data
