#!/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