mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
xend: fix rtc_timeoffset when localtime=1
The rtc_timeoffset parameter in VM config is ignored when localtime=1. Also it is not preserved across reboot. NOTE: This patch changes the meaning of the xenstore /vm/<uuid>/rtc/timeoffset from utc offset to local offset. (it's OK for the ioemu) Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com>
This commit is contained in:
1 parent
37307651ac
commit
8e558b0e97
3 files changed
+13
-17
No files matched your search
@@ -1605,9 +1605,6 @@ class XendDomainInfo:
|
||||
# convert two lists into a python dictionary
|
||||
vm_details = dict(zip(cfg_vm, vm_details))
|
||||
|
||||
if vm_details['rtc/timeoffset'] == None:
|
||||
vm_details['rtc/timeoffset'] = "0"
|
||||
|
||||
for arg, val in vm_details.items():
|
||||
if arg in XendConfig.LEGACY_CFG_TO_XENAPI_CFG:
|
||||
xapiarg = XendConfig.LEGACY_CFG_TO_XENAPI_CFG[arg]
|
||||
@@ -1629,10 +1626,10 @@ class XendDomainInfo:
|
||||
self.info.update_with_image_sxp(sxp.from_string(image_sxp))
|
||||
changed = True
|
||||
|
||||
# Check if the rtc offset has changes
|
||||
if vm_details.get("rtc/timeoffset", "0") != self.info["platform"].get("rtc_timeoffset", "0"):
|
||||
self.info["platform"]["rtc_timeoffset"] = vm_details.get("rtc/timeoffset", 0)
|
||||
changed = True
|
||||
# Update the rtc_timeoffset to be preserved across reboot.
|
||||
# NB. No need to update xenstore domain section.
|
||||
val = int(vm_details.get("rtc/timeoffset", 0))
|
||||
self.info["platform"]["rtc_timeoffset"] = val
|
||||
|
||||
if changed:
|
||||
# Update the domain section of the store, as this contains some
|
||||
@@ -2440,12 +2437,6 @@ class XendDomainInfo:
|
||||
self._configureBootloader()
|
||||
|
||||
try:
|
||||
if self.info['platform'].get('localtime', 0):
|
||||
if time.localtime(time.time())[8]:
|
||||
self.info['platform']['rtc_timeoffset'] = -time.altzone
|
||||
else:
|
||||
self.info['platform']['rtc_timeoffset'] = -time.timezone
|
||||
|
||||
self.image = image.create(self, self.info)
|
||||
|
||||
# repin domain vcpus if a restricted cpus list is provided
|
||||
|
||||
@@ -119,9 +119,14 @@ class ImageHandler:
|
||||
self.vncconsole = int(vmConfig['platform'].get('vncconsole', 0))
|
||||
self.dmargs = self.parseDeviceModelArgs(vmConfig)
|
||||
self.pid = None
|
||||
rtc_timeoffset = vmConfig['platform'].get('rtc_timeoffset')
|
||||
if rtc_timeoffset is not None:
|
||||
xc.domain_set_time_offset(self.vm.getDomid(), int(rtc_timeoffset))
|
||||
rtc_timeoffset = int(vmConfig['platform'].get('rtc_timeoffset', 0))
|
||||
if vmConfig['platform'].get('localtime', 0):
|
||||
if time.localtime(time.time())[8]:
|
||||
rtc_timeoffset -= time.altzone
|
||||
else:
|
||||
rtc_timeoffset -= time.timezone
|
||||
if rtc_timeoffset != 0:
|
||||
xc.domain_set_time_offset(self.vm.getDomid(), rtc_timeoffset)
|
||||
|
||||
self.cpuid = None
|
||||
self.cpuid_check = None
|
||||
|
||||
@@ -204,7 +204,7 @@ gopts.var('cpus', val='CPUS',
|
||||
use="CPUS to run the domain on.")
|
||||
|
||||
gopts.var('rtc_timeoffset', val='RTC_TIMEOFFSET',
|
||||
fn=set_value, default="0",
|
||||
fn=set_int, default=0,
|
||||
use="Set RTC offset.")
|
||||
|
||||
gopts.var('pae', val='PAE',
|
||||
|
||||