#!/bin/bash

SD_PREFIX=$(sed -nr 's#^.*root=[^ ]*/([^ ]+)[1-8].*$#\1#gp' /proc/cmdline)

if [ "${SD_PREFIX}" == "" ];then
   SD_PREFIX="mmcblk0p"
fi

BOOT_DEVICE="/dev/${SD_PREFIX}1"
BOOTCONF_DEVICE="/dev/${SD_PREFIX}2"
RECOVERY_DEVICE="/dev/${SD_PREFIX}3"

systembootmount="/run/media/systemboot/"
bootconfmount="/run/media/bootconf/"

# fsck systemboot and bootconf partition and clean the fsck residual files, like FSCK0000.REC
# on systemboot partition
umount ${BOOT_DEVICE}
fsck.vfat -p ${BOOT_DEVICE}
if [ ! -d ${systembootmount} ]; then
   mkdir -p ${systembootmount}
fi
mount ${BOOT_DEVICE} ${systembootmount}
rm ${systembootmount}FSCK*
umount ${systembootmount}

# we found that fsck on bootconf partition may delete signatures, like boot_boot_broken
# so cancel this step temporarily.

# fsck recovery partition
fsck.ext4 -p ${RECOVERY_DEVICE}

# TODO: need do fsck for rootfs1, rootfs2 in future

PRODUCT_DEVICE="/dev/${SD_PREFIX}7"
MAVERICK_DIR="/opt/maverick"

# fsck check product partition.
fsck.ext4 -p ${PRODUCT_DEVICE}

# mount product partition.
for i in $(seq 1 3)
do
   mount -o rw,noatime,nodev ${PRODUCT_DEVICE} ${MAVERICK_DIR}
   if [ $? -ne 0 ]; then
      echo "Mount ${PRODUCT_DEVICE} product partition failed"

      # Try to fix partition errors when checking mount partition failed.
      fsck -y ${PRODUCT_DEVICE}
   else
      echo "Mount ${PRODUCT_DEVICE} product partition success"
      break
   fi
done
