- bnc#623833 - Error in Xend-API method VM_set_actions_after_crash

21866-xenapi.patch

- bnc#625003 - Fix vm config options coredump-{restart,destroy}
  Added hunk to xm-create-xflag.patch

- bnc#605186 - Squelch harmless error messages in block-iscsi

- bnc#623438 - Add ability to control SCSI device path scanning
  in xend
  21847-pscsi.patch
  21723-get-domu-state.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=68
This commit is contained in:
Charles Arnold 2010-07-30 22:30:24 +00:00 committed by Git OBS Bridge
parent 87d62a38d6
commit 393ad2e586
14 changed files with 498 additions and 34 deletions

188
21723-get-domu-state.patch Normal file
View File

@ -0,0 +1,188 @@
# HG changeset patch
# User Ian Jackson <Ian.Jackson@eu.citrix.com>
# Date 1277819571 -3600
# Node ID a60c604b5829db6285ff89d8163478330ac12ee2
# Parent 7b00193bd0334606b6f6779c3f14a1667a952fe4
tools/xend, xm: add a command to get the state of VMs
add a command "domstate" to get the state of Vms, which may have one state of
{'shutoff', 'idle','shutdown','running','crashed','paused' or 'paused by
admin"}.
For case of pause, I distinguish it into two conditions. One is "paused" the
other is "paused by admin".
"pasued by admin" means that users pause a domain voluntary by "xm paused
VM" or " API"
Signed-off-by James (Song Wei) <jsong@novell.com>
Index: xen-4.0.0-testing/tools/python/xen/xend/XendDomain.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendDomain.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendDomain.py
@@ -250,6 +250,18 @@ class XendDomain:
@return: path to config file.
"""
return os.path.join(self._managed_path(domuuid), CACHED_CONFIG_FILE)
+ def domain_setpauseflag(self, dom, flag=False):
+ try:
+ dominfo = self.domain_lookup_nr(dom)
+ dominfo.paused_by_admin = flag
+ except Exception, err:
+ log.debug("error in in setpauseflag")
+ def domain_getpauseflag(self, dom):
+ try:
+ dominfo = self.domain_lookup_nr(dom)
+ return dominfo.paused_by_admin
+ except Exception, err:
+ log.debug("error in in getpauseflag")
def _managed_check_point_path(self, domuuid):
"""Returns absolute path to check point file for managed domain.
Index: xen-4.0.0-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -327,6 +327,8 @@ class XendDomainInfo:
@type info: dictionary
@ivar domid: Domain ID (if VM has started)
@type domid: int or None
+ @ivar paused_by_admin: Is this Domain paused by command or API
+ @type paused_by_admin: bool
@ivar guest_bitsize: the bitsize of guest
@type guest_bitsize: int or None
@ivar alloc_mem: the memory domain allocated when booting
@@ -390,6 +392,7 @@ class XendDomainInfo:
self.domid = domid
self.guest_bitsize = None
self.alloc_mem = None
+ self.paused_by_admin = False
maxmem = self.info.get('memory_static_max', 0)
memory = self.info.get('memory_dynamic_max', 0)
Index: xen-4.0.0-testing/tools/python/xen/xend/server/SrvDomain.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/server/SrvDomain.py
+++ xen-4.0.0-testing/tools/python/xen/xend/server/SrvDomain.py
@@ -225,6 +225,20 @@ class SrvDomain(SrvDir):
self.acceptCommand(req)
return self.xd.domain_reset(self.dom.getName())
+ def op_do_get_pauseflag(self, op, req):
+ self.acceptCommand(req)
+ return req.threadRequest(self.do_get_pauseflag, op, req)
+
+ def do_get_pauseflag(self, _, req):
+ return self.xd.domain_getpauseflag(self.dom.getName(), req)
+
+ def op_do_set_pauseflag(self, op, req):
+ self.acceptCommand(req)
+ return req.threadRequest(self.do_set_pauseflag, op, req)
+
+ def do_set_pauseflag(self, _, req):
+ return self.xd.domain_setpauseflag(self.dom.getName(), req)
+
def op_usb_add(self, op, req):
self.acceptCommand(req)
return req.threadRequest(self.do_usb_add, op, req)
Index: xen-4.0.0-testing/tools/python/xen/xm/main.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xm/main.py
+++ xen-4.0.0-testing/tools/python/xen/xm/main.py
@@ -165,6 +165,8 @@ SUBCOMMAND_HELP = {
#usb
'usb-add' : ('<domain> <[host:bus.addr] [host:vendor_id:product_id]>','Add the usb device to FV VM.'),
'usb-del' : ('<domain> <[host:bus.addr] [host:vendor_id:product_id]>','Delete the usb device to FV VM.'),
+ #domstate
+ 'domstate' : ('<domain> ', 'get the state of a domain'),
# device commands
@@ -370,6 +372,7 @@ common_commands = [
"uptime",
"usb-add",
"usb-del",
+ "domstate",
"vcpu-set",
]
@@ -404,6 +407,7 @@ domain_commands = [
"uptime",
"usb-add",
"usb-del",
+ "domstate",
"vcpu-list",
"vcpu-pin",
"vcpu-set",
@@ -901,7 +905,6 @@ def getDomains(domain_names, state, full
return "-"
state_str = "".join([state_on_off(state)
for state in states])
-
dom_rec.update({'name': dom_rec['name_label'],
'memory_actual': int(dom_metrics_rec['memory_actual'])/1024,
'vcpus': dom_metrics_rec['VCPUs_number'],
@@ -1395,8 +1398,10 @@ def xm_pause(args):
if serverType == SERVER_XEN_API:
server.xenapi.VM.pause(get_single_vm(dom))
+ server.xenapi.VM.set_pauseflag(get_single_vm(dom), True)
else:
server.xend.domain.pause(dom)
+ server.xend.domain.setpauseflag(dom, True)
def xm_unpause(args):
arg_check(args, "unpause", 1)
@@ -1404,8 +1409,10 @@ def xm_unpause(args):
if serverType == SERVER_XEN_API:
server.xenapi.VM.unpause(get_single_vm(dom))
+ server.xenapi.VM.set_pauseflag(get_single_vm(dom), False)
else:
server.xend.domain.unpause(dom)
+ server.xend.domain.setpauseflag(dom, False)
def xm_dump_core(args):
live = False
@@ -1515,6 +1522,32 @@ def xm_usb_add(args):
arg_check(args, "usb-add", 2)
server.xend.domain.usb_add(args[0],args[1])
+def xm_domstate(args):
+ arg_check(args, "domstate", 1)
+ (opitons, params) = getopt.gnu_getopt(args, 's', ['domname='])
+ doms = getDomains(params, 'all')
+ d = parse_doms_info(doms[0])
+ state = d['state']
+ if state:
+ if state.find('s') > 0:
+ print 'shutoff'
+ elif state.find('b') > 0:
+ print 'idle'
+ elif state.find('d') > 0:
+ print 'shutdown'
+ elif state.find('r') > 0:
+ print 'running'
+ elif state.find('c') > 0:
+ print 'crashed'
+ elif state.find('p') > 0:
+ if server.xend.domain.getpauseflag(args[0]):
+ print 'paused by admin'
+ else:
+ print 'paused'
+ else:
+ print 'shutoff'
+ return
+
def xm_usb_del(args):
arg_check(args, "usb-del", 2)
server.xend.domain.usb_del(args[0],args[1])
@@ -3538,6 +3571,8 @@ commands = {
#usb
"usb-add": xm_usb_add,
"usb-del": xm_usb_del,
+ #domstate
+ "domstate": xm_domstate,
}
## The commands supported by a separate argument parser in xend.xm.

130
21847-pscsi.patch Normal file
View File

@ -0,0 +1,130 @@
# HG changeset patch
# User "Dube, Lutz" <lutz.dube@ts.fujitsu.com>
# Date 1279902875 -3600
# Node ID 4814e16ea4105502332407e3379c49da92018899
# Parent e23302fcb83c72f93ec01285bd7f4f1641eb67e4
tools/xend: Fix performance of xend with more than 10000 FC device paths
On server startup xend start or a later xend restart needs approx. 30 min to
start/restart. Without attached FC devices xend start/restart needs only some
seconds.
server type: Fujitsu Primergy RX600-S5
The time gets lost in xen/xend/XendNode.py line 329 while calling
vscsi_util.get_all_scsi_device().
329 for pscsi_record in vscsi_util.get_all_scsi_devices():
330 scsi_id = pscsi_record['scsi_id']
331 if scsi_id:
332 saved_HBA_uuid = None
I think, in most cases we don't need all the PSCSI devices registered in
xend, but only a few of it.
So a good solution for this perforamce issue is to scan only the SCSI device
paths we need, controlled by a new option in xend-config.sxp.
I have made a patch to allow specification of scsi devices we need in xend
in the config file xend-config.sxp.
The new options pscsi-device-mask expects a list of device ids oder partial
device ids like the option of lsscsi, e.g.
(pscsi-device-mask ('<partial-dev-id1' 'partial-dev-id2' ...))
Without this option set in xend-config.sxp or if lsscsi is not support, all
device paths are process like today.
Signed-off-by: Lutz Dube Lutz.Dube@ts.fujitsu.com
Comment from Masaki Kanno <kanno.masaki@jp.fujitsu.com>: "Well done"
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
Index: xen-4.0.0-testing/tools/examples/xend-config.sxp
===================================================================
--- xen-4.0.0-testing.orig/tools/examples/xend-config.sxp
+++ xen-4.0.0-testing/tools/examples/xend-config.sxp
@@ -277,3 +277,11 @@
# we have to realize this may incur security issue and we can't make sure the
# device assignment could really work properly even after we do this.
#(pci-passthrough-strict-check yes)
+
+# If we have a very big scsi device configuration, start of xend is slow,
+# because xend scans all the device paths to build its internal PSCSI device
+# list. If we need only a few devices for assigning to a guest, we can reduce
+# the scan to this device. Set list list of device paths in same syntax like in
+# command lsscsi, e.g. ('16:0:0:0' '15:0')
+# (pscsi-device-mask ('*'))
+
Index: xen-4.0.0-testing/tools/python/xen/util/vscsi_util.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/util/vscsi_util.py
+++ xen-4.0.0-testing/tools/python/xen/util/vscsi_util.py
@@ -148,11 +148,12 @@ def _vscsi_get_scsidevices_by_sysfs():
return devices
-def vscsi_get_scsidevices():
+def vscsi_get_scsidevices(mask=""):
""" get all scsi devices information """
- devices = _vscsi_get_scsidevices_by_lsscsi("")
- if devices:
+ devices = _vscsi_get_scsidevices_by_lsscsi("[%s]" % mask)
+ if devices or (len(mask) and mask[0] != "*"):
+ # devices found or partial device scan
return devices
return _vscsi_get_scsidevices_by_sysfs()
@@ -274,9 +275,9 @@ def get_scsi_device(pHCTL):
return _make_scsi_record(scsi_info)
return None
-def get_all_scsi_devices():
+def get_all_scsi_devices(mask=""):
scsi_records = []
- for scsi_info in vscsi_get_scsidevices():
+ for scsi_info in vscsi_get_scsidevices(mask):
scsi_record = _make_scsi_record(scsi_info)
scsi_records.append(scsi_record)
return scsi_records
Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendNode.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
@@ -323,7 +323,12 @@ class XendNode:
pscsi_table = {}
pscsi_HBA_table = {}
- for pscsi_record in vscsi_util.get_all_scsi_devices():
+ pscsi_records = []
+ for pscsi_mask in xendoptions().get_pscsi_device_mask():
+ pscsi_records += vscsi_util.get_all_scsi_devices(pscsi_mask)
+ log.debug("pscsi record count: %s" % len(pscsi_records))
+
+ for pscsi_record in pscsi_records:
scsi_id = pscsi_record['scsi_id']
if scsi_id:
saved_HBA_uuid = None
Index: xen-4.0.0-testing/tools/python/xen/xend/XendOptions.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendOptions.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendOptions.py
@@ -164,6 +164,9 @@ class XendOptions:
"""
print >>sys.stderr, "xend [ERROR]", fmt % args
+ """Default mask for pscsi device scan."""
+ xend_pscsi_device_mask = ['*']
+
def configure(self):
self.set_config()
@@ -430,6 +433,10 @@ class XendOptions:
return self.get_config_bool("pci-passthrough-strict-check",
self.pci_dev_assign_strict_check_default)
+ def get_pscsi_device_mask(self):
+ return self.get_config_value("pscsi-device-mask",
+ self.xend_pscsi_device_mask)
+
class XendOptionsFile(XendOptions):
"""Default path to the config file."""

90
21866-xenapi.patch Normal file
View File

@ -0,0 +1,90 @@
# HG changeset patch
# User Lutz Dube <lutz.dube@ts.fujitsu.com>
# Date 1280245980 -3600
# Node ID e017930af272c888f2a562f842af4e142a973d5f
# Parent 5078f2c1e3d6a3a06ecf352a068eb496f09a2a98
xend (XenAPI): Error in Xend-API method VM_set_actions_after_crash
Xend-API defines the method VM_set_actions_after_crash with valid
action names coredump_and_destroy, coredump_and_restart,... . These
values have to be converted into internal representation
"coredump-destroy", "coredump-restart", ... otherwise start of the
domain is rejected. Same error occurs, if I try to create a VM using
the Xend-API with actions_after_crash set to coredump_and_destroy.
Could you please apply my patch to xen-4-0-testing, too.
Signed-off-by: Lutz Dube Lutz.Dube@ts.fujitsu.com
Acked-by: Jim Fehlig <jfehlig@novell.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendAPI.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
@@ -1667,7 +1667,8 @@ class XendAPI(object):
def VM_set_actions_after_crash(self, session, vm_ref, action):
if action not in XEN_API_ON_CRASH_BEHAVIOUR:
return xen_api_error(['VM_ON_CRASH_BEHAVIOUR_INVALID', vm_ref])
- return self.VM_set('actions_after_crash', session, vm_ref, action)
+ return self.VM_set('actions_after_crash', session, vm_ref,
+ XEN_API_ON_CRASH_BEHAVIOUR_LEGACY[action])
def VM_set_HVM_boot_policy(self, session, vm_ref, value):
if value != "" and value != "BIOS order":
Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPIConstants.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendAPIConstants.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendAPIConstants.py
@@ -63,6 +63,18 @@ XEN_API_ON_CRASH_BEHAVIOUR_FILTER = {
'rename_restart' : 'rename_restart',
}
+XEN_API_ON_CRASH_BEHAVIOUR_LEGACY = {
+ 'destroy' : 'destroy',
+ 'coredump-destroy' : 'coredump-destroy',
+ 'coredump_and_destroy' : 'coredump-destroy',
+ 'restart' : 'restart',
+ 'coredump-restart' : 'coredump-restart',
+ 'coredump_and_restart' : 'coredump-restart',
+ 'preserve' : 'preserve',
+ 'rename-restart' : 'rename-restart',
+ 'rename_restart' : 'rename-restart',
+}
+
XEN_API_VBD_MODE = ['RO', 'RW']
XEN_API_VDI_TYPE = ['system', 'user', 'ephemeral']
XEN_API_VBD_TYPE = ['CD', 'Disk']
Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
@@ -41,6 +41,7 @@ from xen.util.pci import pci_opts_list_f
from xen.xend.XendSXPDev import dev_dict_to_sxp
from xen.util import xsconstants
from xen.util import auxbin
+from xen.xend.XendAPIConstants import *
import xen.util.fileuri
log = logging.getLogger("xend.XendConfig")
@@ -62,6 +63,11 @@ def reverse_dict(adict):
def bool0(v):
return v != '0' and v != 'False' and bool(v)
+def convert_on_crash(v):
+ v = str(v)
+ return XEN_API_ON_CRASH_BEHAVIOUR_LEGACY[v] \
+ if v in XEN_API_ON_CRASH_BEHAVIOUR else v
+
# Recursively copy a data struct, scrubbing out VNC passwords.
# Will scrub any dict entry with a key of 'vncpasswd' or any
# 2-element list whose first member is 'vncpasswd'. It will
@@ -211,7 +217,7 @@ XENAPI_CFG_TYPES = {
'VCPUs_live': int,
'actions_after_shutdown': str,
'actions_after_reboot': str,
- 'actions_after_crash': str,
+ 'actions_after_crash': convert_on_crash,
'PV_bootloader': str,
'PV_kernel': str,
'PV_ramdisk': str,

View File

@ -22,7 +22,7 @@ find_sdev()
{
unset dev
for session in /sys/class/iscsi_session/session*; do
if [ "$1" = "`cat $session/targetname`" ]; then
if [ "$1" = "`cat $session/targetname 2>/dev/null`" ]; then
dev=`basename $session/device/target*/*:0:*/block*/*`
return
fi
@ -35,7 +35,7 @@ find_sdev_rev()
for session in /sys/class/iscsi_session/session*; do
dev=`basename $session/device/target*/*:0:*/block*/*`
if [ "$dev" = "$1" ]; then
tgt=`cat $session/targetname`
tgt=`cat $session/targetname 2>/dev/null`
return
fi
done

View File

@ -516,7 +516,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
except Exception, ex:
log.exception(ex)
@@ -1835,7 +1870,9 @@ class XendAPI(object):
@@ -1836,7 +1871,9 @@ class XendAPI(object):
'is_control_domain': xeninfo.info['is_control_domain'],
'metrics': xeninfo.get_metrics(),
'security_label': xeninfo.get_security_label(),
@ -527,7 +527,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
}
return xen_api_success(record)
@@ -1933,6 +1970,25 @@ class XendAPI(object):
@@ -1934,6 +1971,25 @@ class XendAPI(object):
xendom.domain_restore(src, bool(paused))
return xen_api_success_void()
@ -1465,7 +1465,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
@@ -128,6 +128,7 @@ XENAPI_CFG_TO_LEGACY_CFG = {
@@ -134,6 +134,7 @@ XENAPI_CFG_TO_LEGACY_CFG = {
'PV_bootloader': 'bootloader',
'PV_bootloader_args': 'bootloader_args',
'Description': 'description',
@ -1473,7 +1473,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
}
LEGACY_CFG_TO_XENAPI_CFG = reverse_dict(XENAPI_CFG_TO_LEGACY_CFG)
@@ -234,6 +235,7 @@ XENAPI_CFG_TYPES = {
@@ -240,6 +241,7 @@ XENAPI_CFG_TYPES = {
'superpages' : int,
'memory_sharing': int,
'Description': str,
@ -1481,7 +1481,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
}
# List of legacy configuration keys that have no equivalent in the
@@ -279,6 +281,7 @@ LEGACY_CFG_TYPES = {
@@ -285,6 +287,7 @@ LEGACY_CFG_TYPES = {
'bootloader': str,
'bootloader_args': str,
'description': str,
@ -1489,7 +1489,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
}
# Values that should be stored in xenstore's /vm/<uuid> that is used
@@ -300,6 +303,7 @@ LEGACY_XENSTORE_VM_PARAMS = [
@@ -306,6 +309,7 @@ LEGACY_XENSTORE_VM_PARAMS = [
'on_xend_stop',
'bootloader',
'bootloader_args',
@ -1497,7 +1497,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
]
##
@@ -408,6 +412,7 @@ class XendConfig(dict):
@@ -414,6 +418,7 @@ class XendConfig(dict):
'other_config': {},
'platform': {},
'target': 0,
@ -1634,7 +1634,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
def _init_networks(self):
# Initialise networks
@@ -361,6 +364,18 @@ class XendNode:
@@ -366,6 +369,18 @@ class XendNode:
for physical_host, pscsi_HBA_uuid in pscsi_HBA_table.items():
XendPSCSI_HBA(pscsi_HBA_uuid, {'physical_host': physical_host})
@ -1653,7 +1653,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
def add_network(self, interface):
# TODO
@@ -581,6 +596,7 @@ class XendNode:
@@ -586,6 +601,7 @@ class XendNode:
self.save_PPCIs()
self.save_PSCSIs()
self.save_PSCSI_HBAs()
@ -1661,7 +1661,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
def save_PIFs(self):
pif_records = dict([(pif_uuid, XendAPIStore.get(
@@ -623,6 +639,12 @@ class XendNode:
@@ -628,6 +644,12 @@ class XendNode:
for pscsi_HBA_uuid in XendPSCSI_HBA.get_all()])
self.state_store.save_state('pscsi_HBA', pscsi_HBA_records)
@ -1674,7 +1674,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
def shutdown(self):
return 0
@@ -934,6 +956,7 @@ class XendNode:
@@ -939,6 +961,7 @@ class XendNode:
self.format_node_to_memory(info, 'node_to_memory')
info['node_to_dma32_mem'] = \
self.format_node_to_memory(info, 'node_to_dma32_mem')
@ -1682,7 +1682,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
# FIXME: These are hard-coded to be the inverse of the getXenMemory
# functions in image.py. Find a cleaner way.
@@ -953,6 +976,7 @@ class XendNode:
@@ -958,6 +981,7 @@ class XendNode:
'virt_caps',
'total_memory',
'free_memory',

View File

@ -2,7 +2,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
@@ -1855,7 +1855,14 @@ class XendConfig(dict):
@@ -1861,7 +1861,14 @@ class XendConfig(dict):
ports = sxp.child(dev_sxp, 'port')
for port in ports[1:]:
try:

View File

@ -1,5 +1,7 @@
--- a/tools/python/xen/lowlevel/xc/xc.c
+++ b/tools/python/xen/lowlevel/xc/xc.c
Index: xen-4.0.0-testing/tools/python/xen/lowlevel/xc/xc.c
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/lowlevel/xc/xc.c
+++ xen-4.0.0-testing/tools/python/xen/lowlevel/xc/xc.c
@@ -944,16 +944,16 @@ static PyObject *pyxc_hvm_build(XcObject
#endif
int i;
@ -30,9 +32,11 @@
return Py_BuildValue("{}");
}
--- a/tools/python/xen/xend/XendConfig.py
+++ b/tools/python/xen/xend/XendConfig.py
@@ -151,6 +151,7 @@ XENAPI_PLATFORM_CFG_TYPES = {
Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
@@ -157,6 +157,7 @@ XENAPI_PLATFORM_CFG_TYPES = {
'nographic': int,
'nomigrate': int,
'pae' : int,
@ -40,8 +44,10 @@
'rtc_timeoffset': int,
'parallel': str,
'serial': str,
--- a/tools/python/xen/xend/image.py
+++ b/tools/python/xen/xend/image.py
Index: xen-4.0.0-testing/tools/python/xen/xend/image.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/image.py
+++ xen-4.0.0-testing/tools/python/xen/xend/image.py
@@ -839,6 +839,7 @@ class HVMImageHandler(ImageHandler):
self.apic = int(vmConfig['platform'].get('apic', 0))
@ -66,8 +72,10 @@
acpi = self.acpi,
apic = self.apic)
rc['notes'] = { 'SUSPEND_CANCEL': 1 }
--- a/tools/python/xen/xm/create.py
+++ b/tools/python/xen/xm/create.py
Index: xen-4.0.0-testing/tools/python/xen/xm/create.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xm/create.py
+++ xen-4.0.0-testing/tools/python/xen/xm/create.py
@@ -242,6 +242,10 @@ gopts.var('viridian', val='VIRIDIAN',
use="""Expose Viridian interface to x86 HVM guest?
(Default is 0).""")

View File

@ -325,7 +325,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
@@ -236,6 +236,7 @@ XENAPI_CFG_TYPES = {
@@ -242,6 +242,7 @@ XENAPI_CFG_TYPES = {
'memory_sharing': int,
'Description': str,
'pool_name' : str,

View File

@ -2,7 +2,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendNode.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
@@ -911,15 +911,39 @@ class XendNode:
@@ -916,15 +916,39 @@ class XendNode:
info['cpu_mhz'] = info['cpu_khz'] / 1000
@ -47,7 +47,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
ITEM_ORDER = ['nr_cpus',
'nr_nodes',
'cores_per_socket',
@@ -929,6 +953,9 @@ class XendNode:
@@ -934,6 +958,9 @@ class XendNode:
'virt_caps',
'total_memory',
'free_memory',

View File

@ -1,3 +1,27 @@
-------------------------------------------------------------------
Tue Jul 27 16:32:57 MDT 2010 - jfehlig@novell.com
- bnc#623833 - Error in Xend-API method VM_set_actions_after_crash
21866-xenapi.patch
-------------------------------------------------------------------
Tue Jul 27 15:39:17 MDT 2010 - jfehlig@novell.com
- bnc#625003 - Fix vm config options coredump-{restart,destroy}
Added hunk to xm-create-xflag.patch
-------------------------------------------------------------------
Mon Jul 26 16:49:39 MDT 2010 - jfehlig@novell.com
- bnc#605186 - Squelch harmless error messages in block-iscsi
-------------------------------------------------------------------
Mon Jul 26 16:45:21 MDT 2010 - jfehlig@novell.com
- bnc#623438 - Add ability to control SCSI device path scanning
in xend
21847-pscsi.patch
-------------------------------------------------------------------
Wed Jul 21 11:46:41 MDT 2010 - carnold@novell.com
@ -48,7 +72,7 @@ Tue Jul 6 11:31:33 MDT 2010 - carnold@novell.com
Fri Jun 25 15:43:35 CST 2010 - jsong@novell.com
- bnc#599550 - Xen cannot distinguish the status of 'pause'
addcommand_domstate.patch
21723-get-domu-state.patch
-------------------------------------------------------------------
Tue Jun 22 11:50:35 MDT 2010 - jfehlig@novell.com

View File

@ -133,7 +133,10 @@ Patch55: 21700-32on64-vm86-gpf.patch
Patch56: 21705-trace-printk.patch
Patch57: 21706-trace-security.patch
Patch58: 21712-amd-osvw.patch
Patch59: 21744-x86-cpufreq-range-check.patch
Patch59: 21723-get-domu-state.patch
Patch60: 21744-x86-cpufreq-range-check.patch
Patch61: 21847-pscsi.patch
Patch62: 21866-xenapi.patch
# Our patches
Patch300: xen-config.diff
Patch301: xend-config.diff
@ -639,6 +642,9 @@ Authors:
%patch57 -p1
%patch58 -p1
%patch59 -p1
%patch60 -p1
%patch61 -p1
%patch62 -p1
%patch300 -p1
%patch301 -p1
%patch302 -p1

View File

@ -2,11 +2,10 @@ Index: xen-4.0.0-testing/tools/examples/xend-config.sxp
===================================================================
--- xen-4.0.0-testing.orig/tools/examples/xend-config.sxp
+++ xen-4.0.0-testing/tools/examples/xend-config.sxp
@@ -304,3 +304,62 @@
# we have to realize this may incur security issue and we can't make sure the
@@ -305,6 +305,65 @@
# device assignment could really work properly even after we do this.
#(pci-passthrough-strict-check yes)
+
+# Domain Locking
+# In a multihost environment, domain locking prevents simultaneously
+# running a domain on more than one host.
@ -65,6 +64,10 @@ Index: xen-4.0.0-testing/tools/examples/xend-config.sxp
+# before starting vm1 on HostA.
+#
+#(xend-domain-lock-utility domain-lock)
+
# If we have a very big scsi device configuration, start of xend is slow,
# because xend scans all the device paths to build its internal PSCSI device
# list. If we need only a few devices for assigning to a guest, we can reduce
Index: xen-4.0.0-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
@ -200,7 +203,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendOptions.py
def __init__(self):
self.configure()
@@ -398,6 +409,24 @@ class XendOptions:
@@ -401,6 +412,24 @@ class XendOptions:
else:
return None

View File

@ -29,3 +29,18 @@ Index: xen-4.0.0-testing/tools/python/xen/xm/create.py
from xml.dom.ext import PrettyPrint as XMLPrettyPrint
XMLPrettyPrint(doc)
Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPIConstants.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendAPIConstants.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendAPIConstants.py
@@ -45,8 +45,10 @@ XEN_API_ON_NORMAL_EXIT = [
XEN_API_ON_CRASH_BEHAVIOUR = [
'destroy',
'coredump_and_destroy',
+ 'coredump_destroy',
'restart',
'coredump_and_restart',
+ 'coredump_restart',
'preserve',
'rename_restart'
]

View File

@ -2,7 +2,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendAPI.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
@@ -1922,10 +1922,10 @@ class XendAPI(object):
@@ -1923,10 +1923,10 @@ class XendAPI(object):
bool(live), port, node, ssl, bool(chs))
return xen_api_success_void()