[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] xend: Fix removing /vm/UUID/device paths when device cannot be disconnected
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1236870488 0 # Node ID c9a35fb19e75ada4296c7c4adac06927313e5720 # Parent 3e98bc2b6911572d240708917d41298c7a66e849 xend: Fix removing /vm/UUID/device paths when device cannot be disconnected This is a corrected version of a patch commited as c/s 19250 and reverted by c/s 19314. Thanks to "trap sigerr ERR" in xen-hotplug-common.sh the xen-hotplug-cleanup would exit when reading /local/domain/ID/vm fails thus skipping all the xenstore-rm lines in the rest of the script. Change deviceDestroy behavior to remove /vm/UUID/device/... path only when force was used (as it already does so for both frontend and backend) and do the removing from xen-hotplug-cleanup script when we are sure the device is really not attached to the guest any more. Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx> --- tools/hotplug/Linux/xen-hotplug-cleanup | 14 ++++++++++++++ tools/python/xen/xend/server/DevController.py | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff -r 3e98bc2b6911 -r c9a35fb19e75 tools/hotplug/Linux/xen-hotplug-cleanup --- a/tools/hotplug/Linux/xen-hotplug-cleanup Thu Mar 12 15:07:20 2009 +0000 +++ b/tools/hotplug/Linux/xen-hotplug-cleanup Thu Mar 12 15:08:08 2009 +0000 @@ -11,6 +11,17 @@ dir=$(dirname "$0") # This is pretty horrible, but there's not really a nicer way of solving this. claim_lock "block" +# split backend/DEVCLASS/VMID/DEVID on slashes +path_array=( ${XENBUS_PATH//\// } ) +# get /vm/UUID path +vm=$(xenstore_read_default "/local/domain/${path_array[2]}/vm" "") +# construct /vm/UUID/device/DEVCLASS/DEVID +if [ "$vm" != "" ]; then + vm_dev="$vm/device/${path_array[1]}/${path_array[3]}" +else + vm_dev= +fi + # remove device frontend store entries xenstore-rm -t \ $(xenstore-read "$XENBUS_PATH/frontend" 2>/dev/null) 2>/dev/null || true @@ -19,4 +30,7 @@ xenstore-rm -t "$XENBUS_PATH" 2>/ xenstore-rm -t "$XENBUS_PATH" 2>/dev/null || true xenstore-rm -t "error/$XENBUS_PATH" 2>/dev/null || true +# remove device path from /vm/UUID +[ "$vm_dev" != "" ] && xenstore-rm -t "$vm_dev" 2>/dev/null || true + release_lock "block" diff -r 3e98bc2b6911 -r c9a35fb19e75 tools/python/xen/xend/server/DevController.py --- a/tools/python/xen/xend/server/DevController.py Thu Mar 12 15:07:20 2009 +0000 +++ b/tools/python/xen/xend/server/DevController.py Thu Mar 12 15:08:08 2009 +0000 @@ -235,8 +235,8 @@ class DevController: xstransact.Remove(backpath) xstransact.Remove(frontpath) - # xstransact.Remove(self.devicePath()) ?? Below is the same ? - self.vm._removeVm("device/%s/%d" % (self.deviceClass, dev)) + # xstransact.Remove(self.devicePath()) ?? Below is the same ? + self.vm._removeVm("device/%s/%d" % (self.deviceClass, dev)) def configurations(self, transaction = None): return map(lambda x: self.configuration(x, transaction), self.deviceIDs(transaction)) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |