#!/bin/bash

if mount | grep -q '/data type vfat'; then
    echo "Checking /data"
    touch /data/foo 2>/dev/null
    if [ $? -eq 0 ]; then
        echo "all o.k."
        rm /data/foo
    else
        echo "Error: Cannot write to /data, will try to repair"
        device=$(mount | grep '/data'| cut -f 1 -d ' ')
        if [ ! -b "${device}" ]; then
            echo "I'm goofed: ${device} for /data not found."
            echo "/etc/mtab:"
            cat /etc/mtab
            logger -t omgcheckdisk "Error: ${device} for /data not found."
            logger -t -f /etc/mtab
            exit 1
        fi
        echo "Unmounting /data..."
        umount ${device}
        echo "Performing fs check..."
        fsck.vfat ${device} -a -t
        if [ "$?" -eq 0 ]; then
            echo "Success"
        else
            echo "Failed, 2nd try..."
            fsck.vfat ${device} -a -t
            if [ "$?" -eq 0 ]; then
                echo "Success"
            else
                echo "Error: Cannot repair /data"
                logger -t omgcheckdisk "Error: Cannot repair /data"
                exit 1
            fi
        fi
        echo "remount /data"
        mount -a
        echo "Trying again to write"
        touch /data/foo 2>/dev/null
        if [ $? -eq 0 ]; then
            echo "all o.k."
            rm /data/foo
        else
            echo "Error: Although fsck was successful I'm still unable to write to /data"
            exit 2
        fi
    fi
fi

    