Files
xen/tools/examples/block
T
2005-10-26 14:58:13 +01:00

70 lines
935 B
Bash

#!/bin/sh
dir=$(dirname "$0")
. "$dir/block-common.sh"
expand_dev() {
local dev
case $1 in
/*)
dev=$1
;;
*)
dev=/dev/$1
;;
esac
echo -n $dev
}
t=$(xenstore_read "$XENBUS_PATH"/type || true)
case "$command" in
bind)
p=$(xenstore_read "$XENBUS_PATH"/params)
case $t in
phy)
dev=$(expand_dev $p)
write_dev "$dev"
exit 0
;;
file)
for dev in /dev/loop* ; do
echo "dev is $dev, p is $p"
if losetup $dev $p; then
write_dev "$dev"
exit 0
fi
done
exit 1
;;
*)
[ -x /etc/xen/scripts/block-"$t" ] && \
/etc/xen/scripts/block-"$t" bind $p
;;
esac
;;
unbind)
node=$(xenstore_read "$XENBUS_PATH"/node)
case $t in
phy)
exit 0
;;
file)
losetup -d $node
exit 0
;;
*)
[ -x /etc/xen/scripts/block-"$t" ] && \
/etc/xen/scripts/block-"$t" unbind $node
;;
esac
;;
esac