bfe28d5ee6
Apparently locking mechanism in xen hotplug scripts isn't working. This is workaround before it will be fixed in xen...
61 lines
1.1 KiB
Bash
Executable File
61 lines
1.1 KiB
Bash
Executable File
#!/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 /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
|