#!/bin/sh

PREREQ=""

prereqs()
{
    echo "$PREREQ"
}

case $1 in
    prereqs)
        prereqs
        exit 0
        ;;
esac

modprobe dattobd

rbd="${ROOT#block:}"
if [ -n "$rbd" ]; then
    case "$rbd" in
        LABEL=*)
            rbd="$(echo $rbd | sed 's,/,\\x2f,g')"
            rbd="/dev/disk/by-label/${rbd#LABEL=}"
            ;;
        UUID=*)
            rbd="/dev/disk/by-uuid/${ROOT#UUID=}"
            ;;
        PARTLABEL=*)
            rbd="/dev/disk/by-partlabel/${rbd#PARTLABEL=}"
            ;;
        PARTUUID=*)
            rbd="/dev/disk/by-partuuid/${rbd#PARTUUID=}"
            ;;
    esac

    echo "dattobd: root block device = $rbd" > /dev/kmsg

    # Device might not be ready
    if [ ! -b "$rbd" ]; then
        udevadm settle
    fi

    # Kernel cmdline might not specify rootfstype
    [ -z "$ROOTFSTYPE" ] && ROOTFSTYPE=$(blkid -s TYPE -o value $rbd)

    echo "dattobd: mounting $rbd as $ROOTFSTYPE" > /dev/kmsg
    blockdev --setro $rbd
    mount -t $ROOTFSTYPE -o ro $rbd /etc/datto/dla/mnt > /dev/kmsg
    udevadm settle

    if [ -x /sbin/datto_reload ]; then
        /sbin/datto_reload
    else
        echo "dattobd: error: cannot reload tracking data: missing /sbin/datto_reload" > /dev/kmsg
    fi

    umount -f /etc/datto/dla/mnt > /dev/kmsg
    blockdev --setrw $rbd
fi

exit 0
