From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v4 13/14] tools: don't stop xenstore domain when stopping dom0 Date: Mon, 18 Jan 2016 09:04:03 +0100 Message-ID: <1453104244-6268-14-git-send-email-jgross@suse.com> References: <1453104244-6268-1-git-send-email-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1453104244-6268-1-git-send-email-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org, Ian.Campbell@citrix.com, ian.jackson@eu.citrix.com, stefano.stabellini@eu.citrix.com, wei.liu2@citrix.com, dgdegra@tycho.nsa.gov Cc: Juergen Gross List-Id: xen-devel@lists.xenproject.org When restarting or shutting down dom0 the xendomains script tries to stop all other domains. Don't do this for the xenstore domain, as it might survive a dom0 reboot in the future. The same applies to xl shutdown --all. Here the xenstore domain is flagged as "never stop". Signed-off-by: Juergen Gross --- V4: don't reuse wait_for_it as a counter as requested by Ian Campbell V3: xl shutdown modified to query the "never_stop" flag instead of the xenstore domain id as requested by Ian Campbell drop usage of xenstore-exists as requested by Ian Campbell Signed-off-by: Juergen Gross --- tools/hotplug/Linux/xendomains.in | 15 +++++++++++++++ tools/libxl/xl_cmdimpl.c | 9 +++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/tools/hotplug/Linux/xendomains.in b/tools/hotplug/Linux/xendomains.in index dfe0b33..9f88649 100644 --- a/tools/hotplug/Linux/xendomains.in +++ b/tools/hotplug/Linux/xendomains.in @@ -196,6 +196,15 @@ rdnames() done } +# get xenstore domain id (or 0 if no xenstore domain) +get_xsdomid() +{ + XS_DOMID=`${bindir}/xenstore-read /tool/xenstored/domid 2>/dev/null` + if test $? -ne 0; then + XS_DOMID=0 + fi +} + LIST_GREP='(domain\|(domid\|(name\|^ {$\|"name":\|"domid":' parseln() { @@ -216,12 +225,14 @@ parseln() is_running() { + get_xsdomid rdname $1 RC=1 name=;id= while read LN; do parseln "$LN" || continue if test $id = 0; then continue; fi + if test $id = $XS_DOMID; then continue; fi case $name in ($NM) RC=0 @@ -302,10 +313,12 @@ start() all_zombies() { + get_xsdomid name=;id= while read LN; do parseln "$LN" || continue if test $id = 0; then continue; fi + if test $id = $XS_DOMID; then continue; fi if test "$state" != "-b---d" -a "$state" != "-----d"; then return 1; fi @@ -351,11 +364,13 @@ stop() if test "$XENDOMAINS_AUTO_ONLY" = "true"; then rdnames fi + get_xsdomid echo -n "Shutting down Xen domains:" name=;id= while read LN; do parseln "$LN" || continue if test $id = 0; then continue; fi + if test $id = $XS_DOMID; then continue; fi echo -n " $name" if test "$XENDOMAINS_AUTO_ONLY" = "true"; then eval " diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index f9933cb..25507c7 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -4820,7 +4820,7 @@ static int main_shutdown_or_reboot(int do_reboot, int argc, char **argv) libxl_evgen_domain_death **, libxl_ev_user, int) = do_reboot ? &reboot_domain : &shutdown_domain; int opt, i, nb_domain; - int wait_for_it = 0, all =0; + int wait_for_it = 0, all = 0, nrdeathws = 0; int fallback_trigger = 0; static struct option opts[] = { {"all", 0, 0, 'a'}, @@ -4857,14 +4857,15 @@ static int main_shutdown_or_reboot(int do_reboot, int argc, char **argv) deathws = calloc(nb_domain, sizeof(*deathws)); for (i = 0; i