From 334b2f7d277529f299d1691ecd576cc67fa035c5 Mon Sep 17 00:00:00 2001 From: Anthony Xu Date: Mon, 16 Aug 2010 17:06:20 -0700 Subject: [PATCH] bug 5939: script to clean xenstore disk --- scripts/vm/hypervisor/xenserver/xs_cleanup.sh | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 scripts/vm/hypervisor/xenserver/xs_cleanup.sh diff --git a/scripts/vm/hypervisor/xenserver/xs_cleanup.sh b/scripts/vm/hypervisor/xenserver/xs_cleanup.sh new file mode 100755 index 00000000000..cb81a3f16ef --- /dev/null +++ b/scripts/vm/hypervisor/xenserver/xs_cleanup.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +#set -x + +usage() { + printf "Usage: %s \n" $(basename $0) >&2 + +} + +# remove device which is in xenstore but not in xapi +remove_device() { + be=$1 + xenstore-write /local/domain/0/backend/tap/0/$be/online 0 &>/dev/null + xenstore-write /local/domain/0/backend/tap/0/$be/shutdown-request normal &>/dev/null + for i in $(seq 20) + do + sleep 1 + xenstore-exists /local/domain/0/backend/tap/0/$be/shutdown-done &>/dev/null + if [ $? -eq 0 ] ; then + xenstore-rm /local/domain/0/device/vbd/$be &>/dev/null + xenstore-rm /local/domain/0/backend/tap/0/$be &>/dev/null + xenstore-rm /local/domain/0/error/backend/tap/0/$be &>/dev/null + xenstore-rm /local/domain/0/error/device/vbd/$be &>/dev/null + return + fi + xenstore-exists /local/domain/0/backend/tap/0/$be &>/dev/null + if [ $? -ne 0 ] ; then + return + fi + done + + echo "unplug device $be failed" + exit 2 +} + +bes=`xenstore-list /local/domain/0/backend/tap/0` + +if [ -z "$bes" ]; then + exit 0 +fi + +for be in $bes +do + device=`xenstore-read /local/domain/0/backend/tap/0/$be/dev` + ls $device >/dev/null 2>&1 + if [ $? -ne 0 ]; then + remove_device $be + fi +done + + +echo "======> DONE <======" +exit 0 +