1234567891011121314151617181920212223242526272829303132 |
- #!/bin/sh
- NAME=${DEVNAME#/dev/}
- XS_KEY="qubes-block-devices/$NAME"
- xenstore-rm "$XS_KEY"
- # If device was connected to some VM - detach it
- # Notice: this can be run also in VM, so we cannot use xl...
- device_detach() {
- xs_path=$1
- xenstore-write $xs_path/online 0 $xs_path/state 5
- # Wait for backend to finish dev shutdown
- try=30
- # -lt will break loop also when 'state' will be empty
- while [ "`xenstore-read $xs_path/state 2> /dev/null`" -lt 6 ]; do
- try=$[ $try - 1 ]
- [ "$try" -le 0 ] && break
- sleep 0.1
- done
- xenstore-rm $xs_path
- }
- for XS_DEV_PATH in `xenstore-ls -f backend/vbd | grep 'backend/vbd/[0-9]*/[0-9]* ' | cut -f 1 -d ' '`; do
- CUR_DEVICE=`xenstore-read "$XS_DEV_PATH/params"`
- if [ "$CUR_DEVICE" == "$DEVNAME" ]; then
- device_detach "$XS_DEV_PATH"
- exit 0
- fi
- done
|