This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
lsts_glued/systems/lauv-aux/fs/etc/rc.d/lauv-storage-server
2015-03-16 11:10:20 +00:00

135 lines
2.9 KiB
Plaintext

mount_storage()
{
echo "* Probing storage..."
dev="$(ls $1 2> /dev/null)"
if [ -z "$dev" ]; then
echo "* Storage not present."
return 1
fi
bdev="/dev/${dev}$2"
if ! [ -b "$bdev" ]; then
echo "* Device $bdev does not exist."
return 1
fi
mkdir -p "$cfg_lauv_storage_dir"
mount -o rw,relatime "$bdev" "$cfg_lauv_storage_dir" 2> /dev/null
if [ $? -ne 0 ]; then
echo "* Failed to mount $bdev on $cfg_lauv_storage_dir"
return 1
fi
echo "* Mounted '$bdev' on '$cfg_lauv_storage_dir'"
return 0
}
try_mount_storage()
{
n=0; while [ $n -lt 30 ]; do
mount_storage "$1" "$2"
if [ $? -eq 0 ]; then
return 0
fi
sleep 1
let n++
done
return 1
}
start_nfs_server()
{
echo "* Creating NFS administrative folder..."
mkdir -p /var/lib/nfs
if ! [ -d /var/lib/nfs ]; then
echo "ERROR: failed to create data folder."
return 1
fi
echo "* Launching rpcbind..."
/usr/bin/rpcbind
if [ $? -ne 0 ]; then
echo "ERROR: failed to start rpcbind."
return 1
fi
echo "* Launching rpc.statd..."
/usr/bin/rpc.statd
if [ $? -ne 0 ]; then
echo "ERROR: failed to start rpc.statd."
return 1
fi
echo "* Launching rpc.nfsd..."
/usr/bin/rpc.nfsd
if [ $? -ne 0 ]; then
echo "ERROR: failed to start rpc.nfsd."
return 1
fi
echo "* Creating NFS filesystem table..."
/usr/bin/exportfs -ra
if [ $? -ne 0 ]; then
echo "ERROR: failed to create filesystem table."
return 1
fi
echo "* Launching rpc.mountd..."
/usr/bin/rpc.mountd
if [ $? -ne 0 ]; then
echo "ERROR: failed to start rpc.mountd."
return 1
fi
echo "* Exporting NFS filesystems..."
/usr/bin/exportfs \
-o rw,sync,no_root_squash,no_subtree_check \
10.0.0.0/16:"$cfg_lauv_storage_dir"
if [ $? -ne 0 ]; then
echo "ERROR: failed to export filesystems."
return 1
fi
}
stop_nfs_server()
{
echo "* Unexporting NFS filesystems..."
exportfs -au
echo "* Terminating rpc.mountd..."
killall rpc.mountd 2> /dev/null
echo "* Terminating rpc.statd..."
killall rpc.statd 2> /dev/null
echo "* Terminating rpc.bind..."
killall rpcbind 2> /dev/null
}
start()
{
# Removable storage.
try_mount_storage \
/sys/devices/ocp.3/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb2/2-1/2-1:1.0/host0/target0:0:0/0:0:0:0/block \
1
# Internal storage.
if [ $? -ne 0 ]; then
try_mount_storage \
/sys/devices/ocp.3/48060000.mmc/mmc_host/mmc?/mmc?:*/block \
p1
fi
# FIXME: what to do if the above fails.
start_nfs_server
}
stop()
{
stop_nfs_server
echo "* Unmounting storage.."
umount "$cfg_lauv_storage_dir"
}