#!/bin/bash HOTPLUG_STORE="/var/run/xen-hotplug/${XENBUS_PATH//\//-}" hd_arr[10]=a hd_arr[11]=b hd_arr[12]=c hd_arr[13]=d hd_arr[14]=e hd_arr[15]=f hexdigit() { if [ $1 -lt 10 ] ; then RET=$1 else RET=${hd_arr[$1]} fi } hexnumber() { hexdigit $(($1/16)) ret2=$RET hexdigit $(($1%16)) HEXNUMBER="$ret2"$RET } process() { if ! [ "x""$1" = "xfile" ] ; then exec flock /var/run/qubes/hotplug-block /etc/xen/scripts/block $ORIG_ARGS fi while true ; do dev=$(losetup -f --show $2) if [ -n "$dev" ] ; then break ; fi done hexnumber ${dev:9:70} xenstore-write "$XENBUS_PATH/node" "$dev" \ "$XENBUS_PATH/physical-device" "7:"$HEXNUMBER \ "$XENBUS_PATH/hotplug-status" connected echo "$dev" > "$HOTPLUG_STORE-node" echo "file" > "$HOTPLUG_STORE-type" } #exec 2>>/tmp/block.$$ #set -x export PATH="/sbin:/bin:/usr/bin:/usr/sbin:$PATH" XENBUS_PATH="${XENBUS_PATH:?}" if ! [ "$1" = "add" ] || ! [ -f /var/run/qubes/fast-block-attach ] ; then exec flock -o /var/run/qubes/hotplug-block /etc/xen/scripts/block "$@" fi ORIG_ARGS="$@" vars=$(xenstore-read "$XENBUS_PATH/type" "$XENBUS_PATH/params") process $vars exit 0