blktap2: seperate blktap1/blktap2 disk types

* seperate blktap1/blktap2 disk types
 * use blktap1 when driver is not in explicit list of blktap2 drivers,
 * rather than current check against list of blktap1 only drivers
 * remove 'tapdisk' disk type (it is not a tapdisk disk type) and fix
 * tapdisk disk type check in XenConfig

Signed-off-by: Ryan O'Connor <rjo@cs.ubc.ca>
This commit is contained in:
Keir Fraser committed 2009-07-06 11:47:02 +01:00
1 parent ae9820b4b0
commit 158299ee06
2 files changed
+18 -7

No files matched your search

+6 -2
View File
@@ -1379,9 +1379,13 @@ class XendConfig(dict):
else:
# Save uname for next domain start.
dev_info['required_uname'] = dev_info['uname']
if dev_info['uname'].split(':')[1] not in blktap_disk_types:
tap_disk_type = dev_info['uname'].split(':')[1]
# tapdisk uname may be 'tap:<driver>' or 'tap:tapdisk:<driver>'
if tap_disk_type == 'tapdisk':
tap_disk_type = dev_info['uname'].split(':')[2]
if tap_disk_type not in blktap_disk_types:
raise XendConfigError("tap:%s not a valid disk type" %
dev_info['uname'].split(':')[1])
tap_disk_type)
if dev_type == 'vif':
if not dev_info.get('mac'):
@@ -13,17 +13,24 @@ TAPDISK_BINARY = '/usr/sbin/tapdisk2'
TAPDISK_DEVICE = '/dev/xen/blktap-2/tapdev'
TAPDISK_CONTROL = TAPDISK_SYSFS + '/blktap'
blktap_disk_types = [
blktap1_disk_types = set([
'aio',
'sync',
'vmdk',
'ram',
'qcow',
'qcow2',
'vhd',
'ioemu',
'tapdisk',
]
])
blktap2_disk_types = set([
'aio',
'ram',
'qcow',
'vhd',
])
blktap_disk_types = blktap1_disk_types | blktap2_disk_types
def doexec(args, inputtext=None):
"""Execute a subprocess, then return its return code, stdout and stderr"""
@@ -151,7 +158,7 @@ class Blktap2Controller(BlktapController):
if typ in ('tap'):
if subtyp in ('tapdisk'):
if params in ('ioemu', 'qcow2', 'vmdk', 'sync') or not blktap2_installed:
if params not in blktap2_disk_types or not blktap2_installed:
# pass this device off to BlktapController
log.warn('WARNING: using deprecated blktap module')
self.deviceClass = 'tap'
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.