blob: a2d2cc916f47d49e6f8dca793148685a41ad1afe [file] [log] [blame]
#!/bin/sh
. /etc/utils.sh
trim() {
local var="$1"
var="${var#"${var%%[![:space:]]*}"}"
var="${var%"${var##*[![:space:]]}"}"
echo -n $var
}
hddserial() {
local var
var=$(hdparm -I /dev/sda | grep "Serial Number")
trim "${var##*:}"
}
check_pairing() {
attachedSerial=$(hddserial)
pairedSerial=$(hnvram -rq PAIRED_DISK)
echo "Attached HDD Serial:$attachedSerial, Paired HDD Serial:$pairedSerial"
if [ "$attachedSerial" = "$pairedSerial" ]; then
echo "MATCH!"
else
if [ "$pairedSerial" = "" ]; then
echo "NO PAIR; PAIRING:$attachedSerial"
$(hnvram -w PAIRED_DISK="$attachedSerial")
else
echo "NO MATCH; NO MOUNT"
echo 1 >/tmp/gpio/ledcontrol/hdd_bad_pair
exit 0;
fi
fi
}
FLAGS=noatime,barrier=1,data=writeback,noexec,nosuid,nodev
case "$1" in
start)
failure_media=0
failure_backup=0
mediafs=$(kernopt mediafs)
if is-storage-box && [ ! -e /dev/sda ]; then
echo "No drive found in Storage Box; rescanning."
# "ata1.00: both IDENTIFYs aborted, assuming NODEV"
# This happens sometimes, make it rescan.
echo "0 0 0" >/sys/class/scsi_host/host0/scan
echo "0 0 0" >/sys/class/scsi_host/host1/scan
sleep 5
fi
if startswith "$mediafs" "9p:"; then
echo "Mounting 9p /var/media."
mount -t 9p -o trans=virtio,version=9p2000.L "${mediafs#9p:}" /var/media
failure_media=$?
elif startswith "$mediafs" "/dev/"; then
echo "Mounting ext4 /var/media from '$mediafs'"
mount -o "$FLAGS" -t ext4 "$mediafs" /var/media
elif [ -e /dev/sda ]; then
check_pairing
echo "Mounting SATA device."
if [ -e /dev/sda1 ]; then
tune2fs -m 0 /dev/sda1
mount -o "$FLAGS" -t ext4 /dev/sda1 /var/media
failure_media=$?
if [ -e /dev/sda2 ]; then
mount -o "$FLAGS" -t ext4 /dev/sda2 /var/backup
failure_backup=$?
fi
elif [ -h /dev/sda ]; then
tune2fs -m 0 /dev/sda
mount -o "$FLAGS" -t ext4 /dev/sda /var/media
failure_media=$?
fi
elif is-storage-box; then
echo "No drive found in Storage Box; failing."
failure_media=1
fi
if [ "$failure_media" != 0 ] || [ "$failure_backup" != 0 ]; then
echo "HDD mounting error."
echo 1 >/tmp/gpio/ledcontrol/hdd_mount_err
exit 0
fi
;;
stop)
# Unmount SATA device
echo "Unmounting SATA device"
umount /var/media 2>&1 >/dev/null
umount /var/backup 2>&1 >/dev/null
;;
restart|reload)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac