openwrt-packages/utils/uvol/files/uvol

52 lines
1.4 KiB
Bash

#!/bin/sh
# uvol prototype
# future development roadmap (aka. to-do):
# * re-implement in C (use libubox, execve lvm/ubi*)
# * add atomic batch processing for use by container/package manager
if [ -z "$1" ]; then cat <<EOF
uvol storage volume manager
syntax: uvol command ...
commands:
boot get active volumes ready (called on boot)
free show number of bytes available
total show total number of bytes
align show sector size in bytes
list [volname] list volumes
create volname type size create new volume
type: 'ro' or 'rw'
size: in bytes
remove volname delete volume
device volname show block device for mounting
size volname show size of volume
up volname get volume ready for mounting
down volname take volume down after unmounting
status volname return status of volume
return code: 0 - volume is ready for use
1 - volume is not ready for use
2 - volume doesn'y exist
write volname size write to volume from stdin, size in bytes
EOF
return 22
fi
uvol_backend=
backends_tried=
for backend in /usr/libexec/uvol/*.sh; do
total=$($backend total)
backends_tried="$backends_tried $($backend name)"
[ "$total" ] && uvol_backend=$backend
done
if [ -z "$uvol_backend" ]; then
echo "No backend available. (tried:$backends_tried)"
echo "To setup devices with block storage install 'autopart'."
return 2
fi
flock -x /tmp/run/uvol.lock $uvol_backend "$@"