mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
can also be used by block-enbd and block-nbd. Signed-off-by: Ewan Mellor <ewan@xensource.com>
70 lines
935 B
Bash
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
|