[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] The attached patch allows external devices to migrate. The patch
# HG changeset patch # User emellor@xxxxxxxxxxxxxxxxxxxxxx # Node ID 6af7b456e6845ca14362a9e0553d6a6722ba7b6e # Parent 42358db788fdbf648e9595ed468e7089077fd3a1 The attached patch allows external devices to migrate. The patch contains code that allows to at least detect local migration of a virtual machine and handles this for the virtual TPM (results in a no-op for local migr.). If migration of a virtual machine with attached vTPM to another machine is attempted, XenD will return an error. Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx> diff -r 42358db788fd -r 6af7b456e684 tools/examples/Makefile --- a/tools/examples/Makefile Fri Apr 21 10:44:54 2006 +0100 +++ b/tools/examples/Makefile Fri Apr 21 11:54:12 2006 +0100 @@ -28,9 +28,11 @@ XEN_SCRIPTS += block-enbd block-nbd XEN_SCRIPTS += block-enbd block-nbd XEN_SCRIPTS += vtpm vtpm-delete XEN_SCRIPTS += xen-hotplug-cleanup +XEN_SCRIPTS += external-device-migrate XEN_SCRIPT_DATA = xen-script-common.sh locking.sh logging.sh XEN_SCRIPT_DATA += xen-hotplug-common.sh xen-network-common.sh vif-common.sh XEN_SCRIPT_DATA += block-common.sh vtpm-common.sh vtpm-hotplug-common.sh +XEN_SCRIPT_DATA += vtpm-migration.sh XEN_HOTPLUG_DIR = /etc/hotplug XEN_HOTPLUG_SCRIPTS = xen-backend.agent diff -r 42358db788fd -r 6af7b456e684 tools/examples/vtpm-common.sh --- a/tools/examples/vtpm-common.sh Fri Apr 21 10:44:54 2006 +0100 +++ b/tools/examples/vtpm-common.sh Fri Apr 21 11:54:12 2006 +0100 @@ -46,6 +46,12 @@ if [ -z "$VTPM_IMPL_DEFINED" ]; then true } function vtpm_delete() { + true + } + function vtpm_migrate() { + echo "Error: vTPM migration accross machines not implemented." + } + function vtpm_migrate_recover() { true } fi @@ -300,3 +306,62 @@ function vtpm_delete_instance () { release_lock vtpmdb } + +# Determine whether the given address is local to this machine +# Return values: +# "-1" : the given machine name is invalid +# "0" : this is not an address of this machine +# "1" : this is an address local to this machine +function isLocalAddress() { + local addr=$(ping $1 -c 1 | \ + gawk '{ print substr($3,2,length($3)-2); exit }') + if [ "$addr" == "" ]; then + echo "-1" + return + fi + local res=$(ifconfig | grep "inet addr" | \ + gawk -vaddr=$addr \ + '{ \ + if ( addr == substr($2, 6)) {\ + print "1"; \ + } \ + }' \ + ) + if [ "$res" == "" ]; then + echo "0" + return + fi + echo "1" +} + +# Perform a migration step. This function differentiates between migration +# to the local host or to a remote machine. +# Parameters: +# 1st: destination host to migrate to +# 2nd: name of the domain to migrate +# 3rd: the migration step to perform +function vtpm_migration_step() { + local instance=$(vtpmdb_find_instance $2) + if [ "$instance" == "" ]; then + echo "Error: Translation of domain name ($2) to instance failed. Check /etc/xen/vtpm.db" + log err "Error during translation of domain name" + else + res=$(isLocalAddress $1) + if [ "$res" == "0" ]; then + vtpm_migrate $1 $2 $3 + fi + fi +} + +# Recover from migration due to an error. This function differentiates +# between migration to the local host or to a remote machine. +# Parameters: +# 1st: destination host the migration was going to +# 2nd: name of the domain that was to be migrated +# 3rd: the last successful migration step that was done +function vtpm_recover() { + res=$(isLocalAddress $1) + if [ "$res" == "0" ]; then + vtpm_migrate_recover $1 $2 $3 + fi +} diff -r 42358db788fd -r 6af7b456e684 tools/examples/external-device-migrate --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/examples/external-device-migrate Fri Apr 21 11:54:12 2006 +0100 @@ -0,0 +1,85 @@ +#!/bin/sh + +# Copyright (c) 2005 IBM Corporation +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of version 2.1 of the GNU Lesser General Public +# License as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + + +# This script is called by XenD for migration of external devices +# It does not handle the migration of those devices itself, but +# passes the requests on to further applications +# It handles the low-level command line parsing and some of the +# synchronization + +dir=$(dirname "$0") +. "$dir/logging.sh" + + +function usage() { + echo " Pass the following command line paremeters to the script:" + echo "" + echo "-step <n> : n-th migration step" + echo "-host <host> : the destination host" + echo "-domname <domain name> : name of the domain that is migrating" + echo "-type <device type> : the type of device that is migrating" + echo "-recover : indicates recovery request; an error" + echo " occurred during migration" + echo "-help : display this help screen" +} + +while [ 1 ]; do + if [ "$1" == "-step" ]; then + shift + step=$1 + elif [ "$1" == "-host" ]; then + shift + host=$1 + elif [ "$1" == "-domname" ]; then + shift + domname=$1 + elif [ "$1" == "-type" ]; then + shift + typ=$1 + elif [ "$1" == "-recover" ]; then + recover=1 + elif [ "$1" == "-help" ]; then + usage + exit + else + break + fi + shift +done + +if [ "$step" == "" -o \ + "$host" == "" -o \ + "$typ" == "" -o \ + "$domname" == "" ]; then + echo "Error: Parameter(s) missing (-step/-host/-type/-domname)" +set + echo "" + echo "$0 --help for usage." + exit +fi + +. "$dir/$typ-migration.sh" + +if [ "$recover" == "1" ]; then + func="$typ"_recover + eval $func $host $domname $step +else + func="$typ"_migration_step + eval $func $host $domname $step +fi diff -r 42358db788fd -r 6af7b456e684 tools/examples/vtpm-migration.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/examples/vtpm-migration.sh Fri Apr 21 11:54:12 2006 +0100 @@ -0,0 +1,19 @@ +# +# Copyright (c) 2005 IBM Corporation +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of version 2.1 of the GNU Lesser General Public +# License as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +dir=$(dirname "$0") +. "$dir/vtpm-common.sh" _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |