mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
Distinguish ioemu handled devices and para virtualized devices
Signed-off-by: Xiaofeng Ling <xiaofeng.ling@intel.com> Signed-off-by: Arun Sharma <arun.sharma@intel.com>
This commit is contained in:
1 parent
7e359b2621
commit
c004ce5772
4 files changed
+22
-7
No files matched your search
@@ -743,8 +743,7 @@ class XendDomainInfo:
|
||||
for ctrl in self.getDeviceControllers():
|
||||
ctrl.initController(reboot=True)
|
||||
else:
|
||||
if self.image.ostype != 'vmx':
|
||||
self.create_configured_devices()
|
||||
self.create_configured_devices()
|
||||
if not self.device_model_pid:
|
||||
self.device_model_pid = self.image.createDeviceModel()
|
||||
|
||||
@@ -916,8 +915,7 @@ class XendDomainInfo:
|
||||
"""
|
||||
self.configure_fields()
|
||||
self.create_devices()
|
||||
if self.image.ostype != 'vmx':
|
||||
self.create_blkif()
|
||||
self.create_blkif()
|
||||
|
||||
def create_blkif(self):
|
||||
"""Create the block device interface (blkif) for the vm.
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#============================================================================
|
||||
|
||||
import os, string
|
||||
import re
|
||||
|
||||
import xen.lowlevel.xc; xc = xen.lowlevel.xc.new()
|
||||
from xen.xend import sxp
|
||||
@@ -329,8 +330,15 @@ class VmxImageHandler(ImageHandler):
|
||||
if name == 'vbd':
|
||||
vbdinfo = sxp.child(device, 'vbd')
|
||||
uname = sxp.child_value(vbdinfo, 'uname')
|
||||
vbddev = sxp.child_value(vbdinfo, 'dev')
|
||||
typedev = sxp.child_value(vbdinfo, 'dev')
|
||||
(vbdtype, vbdparam) = string.split(uname, ':', 1)
|
||||
if re.match('^ioemu:', typedev):
|
||||
(emtype, vbddev) = string.split(typedev, ':', 1)
|
||||
else:
|
||||
emtype = 'vbd'
|
||||
vbddev = typedev
|
||||
if emtype != 'ioemu':
|
||||
continue;
|
||||
vbddev_list = ['hda', 'hdb', 'hdc', 'hdd']
|
||||
if vbddev not in vbddev_list:
|
||||
raise VmError("vmx: for qemu vbd type=file&dev=hda~hdd")
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
"""Support for virtual block devices.
|
||||
"""
|
||||
import string
|
||||
import re
|
||||
|
||||
from xen.util import blkif
|
||||
from xen.xend.XendError import XendError, VmError
|
||||
@@ -199,6 +200,7 @@ class BlkDev(Dev):
|
||||
self.vdev = None
|
||||
self.mode = None
|
||||
self.type = None
|
||||
self.emtype = None
|
||||
self.params = None
|
||||
self.node = None
|
||||
self.device = None
|
||||
@@ -237,7 +239,12 @@ class BlkDev(Dev):
|
||||
# Split into type and type-specific params (which are passed to the
|
||||
# type-specific control script).
|
||||
(self.type, self.params) = string.split(self.uname, ':', 1)
|
||||
self.dev = sxp.child_value(config, 'dev')
|
||||
typedev = sxp.child_value(config, 'dev')
|
||||
if re.match( '^ioemu:', typedev):
|
||||
(self.emtype, self.dev) = string.split(typedev, ':', 1)
|
||||
else:
|
||||
self.emtype = 'vbd'
|
||||
self.dev = typedev
|
||||
if not self.dev:
|
||||
raise VmError('vbd: Missing dev')
|
||||
self.mode = sxp.child_value(config, 'mode', 'r')
|
||||
@@ -258,6 +265,8 @@ class BlkDev(Dev):
|
||||
if recreate:
|
||||
pass
|
||||
else:
|
||||
if self.emtype == 'ioemu':
|
||||
return
|
||||
node = Blkctl.block('bind', self.type, self.params)
|
||||
self.setNode(node)
|
||||
self.attachBackend()
|
||||
|
||||