diff -r ff026e9af397 tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py +++ b/tools/python/xen/xend/XendDomainInfo.py @@ -55,6 +55,7 @@ from xen.xend.xenstore.xswatch import xs from xen.xend.XendConstants import * from xen.xend.XendAPIConstants import * from xen.xend.server.DevConstants import xenbusState +from xen.xend.server.BlktapController import TAPDISK_DEVICE, parseDeviceString from xen.xend.XendVMMetrics import XendVMMetrics @@ -543,18 +544,18 @@ class XendDomainInfo: try: if(self.domid): # get all blktap2 devices - dev = xstransact.List(self.vmpath + 'device/tap2') + dev = xstransact.List(self.vmpath + '/device/tap2') for x in dev: path = self.getDeviceController('tap2').readBackend(x, 'params') - if path and path.startswith('/dev/xen/blktap-2'): - #Figure out the sysfs path. - pattern = re.compile('/dev/xen/blktap-2/tapdev(\d+)$') - ctrlid = pattern.search(path) - ctrl = '/sys/class/blktap2/blktap' + ctrlid.group(1) - #pause the disk - f = open(ctrl + '/pause', 'w') - f.write('pause'); - f.close() + if path and path.startswith(TAPDISK_DEVICE): + try: + _minor, _dev, ctrl = parseDeviceString(path) + #pause the disk + f = open(ctrl + '/pause', 'w') + f.write('pause'); + f.close() + except: + pass except Exception, ex: log.warn('Could not pause blktap disk.'); @@ -572,19 +573,20 @@ class XendDomainInfo: """ try: if(self.domid): - dev = xstransact.List(self.vmpath + 'device/tap2') + dev = xstransact.List(self.vmpath + '/device/tap2') for x in dev: path = self.getDeviceController('tap2').readBackend(x, 'params') - if path and path.startswith('/dev/xen/blktap-2'): - #Figure out the sysfs path. - pattern = re.compile('/dev/xen/blktap-2/tapdev(\d+)$') - ctrlid = pattern.search(path) - ctrl = '/sys/class/blktap2/blktap' + ctrlid.group(1) - #unpause the disk - if(os.path.exists(ctrl + '/resume')): - f = open(ctrl + '/resume', 'w'); - f.write('resume'); - f.close(); + if path and path.startswith(TAPDISK_DEVICE): + try: + #Figure out the sysfs path. + _minor, _dev, ctrl = parseDeviceString(path) + #unpause the disk + if(os.path.exists(ctrl + '/resume')): + f = open(ctrl + '/resume', 'w'); + f.write('resume'); + f.close(); + except: + pass except Exception, ex: log.warn('Could not unpause blktap disk: %s' % str(ex)); diff -r ff026e9af397 tools/python/xen/xend/server/BlktapController.py --- a/tools/python/xen/xend/server/BlktapController.py +++ b/tools/python/xen/xend/server/BlktapController.py @@ -237,9 +237,7 @@ class Blktap2Controller(BlktapController self.waitForBackend_destroy(backpath) #Figure out the sysfs path. - pattern = re.compile('/dev/xen/blktap-2/tapdev(\d+)$') - ctrlid = pattern.search(path) - ctrl = '/sys/class/blktap2/blktap' + ctrlid.group(1) + minor, dev, ctrl = parseDeviceString(path) #Close out the disk f = open(ctrl + '/remove', 'w')