fb53ca5547
libxl.add-option-to-disable-disk-cache-flushes-in-qdisk.patch qemu-xen-upstream-qdisk-cache-unsafe.patch - libxl: introduce an option for disabling the non-O_DIRECT workaround recognize direct-io-safe in domU.cfg diskspec libxl.introduce-an-option-to-disable-the-non-O_DIRECT-workaround.patch - fate#316071: add discard support for file backed storage (qdisk) update patch to allow more values in overloaded ->readwrite member - bnc#826717 - VUL-0: CVE-2013-3495: XSA-59: xen: Intel VT-d Interrupt Remapping engines can be evaded by native NMI interrupts 537b5e50-VT-d-apply-quirks-at-device-setup-time-rather-than-only-at-boot.patch 537b5e79-VT-d-extend-error-report-masking-workaround-to-newer-chipsets.patch - Upstream patches from Jan 53709b77-Nested-VMX-load-current_vmcs-only-when-it-exists.patch 53732f4f-x86-MCE-bypass-uninitialized-vcpu-in-vMCE-injection.patch 537b5ede-move-domain-to-cpupool0-before-destroying-it.patch - Update README.SuSE with information on the toolstack change - fate#316071: add discard support for file backed storage (qdisk) update to recognize option discard/no-discard instead of discard=0,1 to match upstream change OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=316
54 lines
2.0 KiB
Diff
54 lines
2.0 KiB
Diff
# Commit bac6334b51d9bcfe57ecf4a4cb5288348fcf044a
|
|
# Date 2014-05-20 15:55:42 +0200
|
|
# Author Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|
# Committer Jan Beulich <jbeulich@suse.com>
|
|
move domain to cpupool0 before destroying it
|
|
|
|
Currently when a domain is destroyed it is removed from the domain_list
|
|
before all of it's resources, including the cpupool membership, are freed.
|
|
This can lead to a situation where the domain is still member of a cpupool
|
|
without for_each_domain_in_cpupool() (or even for_each_domain()) being
|
|
able to find it any more. This in turn can result in rejection of removing
|
|
the last cpu from a cpupool, because there seems to be still a domain in
|
|
the cpupool, even if it can't be found by scanning through all domains.
|
|
|
|
This situation can be avoided by moving the domain to be destroyed to
|
|
cpupool0 first and then remove it from this cpupool BEFORE deleting it from
|
|
the domain_list. As cpupool0 is always active and a domain without any cpupool
|
|
membership is implicitly regarded as belonging to cpupool0, this poses no
|
|
problem.
|
|
|
|
Signed-off-by: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|
Reviewed-by: Jan Beulich <jbeulich@suse.com>
|
|
Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
|
|
|
|
--- a/xen/common/domain.c
|
|
+++ b/xen/common/domain.c
|
|
@@ -539,6 +539,8 @@ int domain_kill(struct domain *d)
|
|
BUG_ON(rc != -EAGAIN);
|
|
break;
|
|
}
|
|
+ if ( sched_move_domain(d, cpupool0) )
|
|
+ return -EAGAIN;
|
|
for_each_vcpu ( d, v )
|
|
unmap_vcpu_info(v);
|
|
d->is_dying = DOMDYING_dead;
|
|
@@ -721,8 +723,6 @@ static void complete_domain_destroy(stru
|
|
|
|
sched_destroy_domain(d);
|
|
|
|
- cpupool_rm_domain(d);
|
|
-
|
|
/* Free page used by xen oprofile buffer. */
|
|
#ifdef CONFIG_XENOPROF
|
|
free_xenoprof_pages(d);
|
|
@@ -770,6 +770,8 @@ void domain_destroy(struct domain *d)
|
|
if ( _atomic_read(old) != 0 )
|
|
return;
|
|
|
|
+ cpupool_rm_domain(d);
|
|
+
|
|
/* Delete from task list and task hashtable. */
|
|
TRACE_1D(TRC_SCHED_DOM_REM, d->domain_id);
|
|
spin_lock(&domlist_update_lock);
|