[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] blktap2: add blktap2 device classanddevicecontroller



Hi Kan,

On Wed, Jul 01, 2009 at 04:41:10PM +0900, Masaki Kanno wrote:
> Hi Ryan,
> 
> I tested your patch by using a PV domain. 
> The results are as follows.
> 
> Managed domains|Domain status |Commands        |tap:aio |tap:sync
> ---------------+--------------+----------------+--------+--------
> Yes            |Active        |xm block-attach | OK     | OK
>                |              +----------------+--------+--------
>                |              |xm block-deatch | OK     |Failed-1
>                |              +----------------+--------+--------
>                |              |xm shutdown     | OK     | OK
>                +--------------+----------------+--------+--------
>                |Inactive      |xm start        | OK     | OK
>                |              +----------------+--------+--------
>                |              |xm block-attach | OK     | OK?-2
>                |              +--------------- +--------+--------
>                |              |xm block-detach | OK     | OK?-2
> ---------------+--------------+----------------+--------+--------
> No             | -            |xm create       | OK     | OK
>                |              +----------------+--------+--------
>                |              |xm block-attach | OK     | OK
>                |              +--------------- +--------+--------
>                |              |xm block-detach | OK     | OK
>                |              +----------------+--------+--------
>                |              |xm shutdown     | OK     | OK
> ---------------+--------------+----------------+--------+--------

Thanks for testing my patch!

> 
> Failed-1:
> xm block-detach command succeeded.
> But I detected the following error message in xend.log.
> 
> [2009-07-01 16:12:30 3618] DEBUG (XendDomainInfo:1190) 
> XendDomainInfo.destroyDevice: deviceClass = tap, device = 833
> [2009-07-01 16:12:30 3618] DEBUG (DevController:180) Waiting for 833 - 
> destroyDevice.
> [2009-07-01 16:12:31 3618] DEBUG (DevController:649) deviceDestroyCallback 
> /local/domain/0/backend/tap/8/833/hotplug-status.
> [2009-07-01 16:12:31 3618] DEBUG (DevController:649) deviceDestroyCallback 
> /local/domain/0/backend/tap/8/833/hotplug-status.
> [2009-07-01 16:12:31 3618] DEBUG (DevController:658) deviceDestroyCallback 6.
> [2009-07-01 16:12:31 3618] ERROR (XendConfig:1129) dumping sxp from device 
> controllers
> Traceback (most recent call last):
>   File "usr/lib/python2.4/site-packages/xen/xend/XendConfig.py", line 1115, 
> in to_sxp
>     configs = controller.configurations(txn)
>   File "usr/lib/python2.4/site-packages/xen/xend/server/DevController.py", 
> line 242, in configurations
>     return map(lambda x: self.configuration(x, transaction), 
> self.deviceIDs(transaction))
>   File "usr/lib/python2.4/site-packages/xen/xend/server/DevController.py", 
> line 242, in <lambda>
>     return map(lambda x: self.configuration(x, transaction), 
> self.deviceIDs(transaction))
>   File "usr/lib/python2.4/site-packages/xen/xend/server/DevController.py", 
> line 249, in configuration
>     configDict = self.getDeviceConfiguration(devid, transaction)
>   File "usr/lib/python2.4/site-packages/xen/xend/server/blkif.py", line 160, 
> in getDeviceConfiguration
>     \047bootable\047)
>   File "usr/lib/python2.4/site-packages/xen/xend/server/DevController.py", 
> line 447, in readBackendTxn
>     raise VmError("Device %s not connected" % devid)
> VmError: Device 833 not connected

I have been able to reproduce this, although sometimes the block-detach
works without error. Further, I also get a similar error without my
patch when detaching a vbd device from a running managed domain:

[2009-07-01 12:47:00 17306] DEBUG (XendDomainInfo:1187) 
XendDomainInfo.destroyDevice: deviceClass = vbd, device = 51713
[2009-07-01 12:47:00 17306] DEBUG (DevController:180) Waiting for 51713 - 
destroyDevice.
[2009-07-01 12:47:00 17306] DEBUG (DevController:678) deviceDestroyCallback 
/local/domain/0/backend/vbd/13/51713/hotplug-status.
[2009-07-01 12:47:00 17306] DEBUG (DevController:678) deviceDestroyCallback 
/local/domain/0/backend/vbd/13/51713/hotplug-status.
[2009-07-01 12:47:00 17306] DEBUG (DevController:687) deviceDestroyCallback 6.
[2009-07-01 12:47:00 17306] ERROR (XendConfig:1129) dumping sxp from device 
controllers
Traceback (most recent call last):
  File "usr/lib/python2.5/site-packages/xen/xend/XendConfig.py", line 1119, in 
to_sxp
    dev_type, dev_cfg = self['devices'][dev_uuid]
KeyError: None

This looks to be a race condition between the block device detach and
the managed_domain_save() code. The device is partially removed from
xenstore when to_sxp() builds the device sxprs, so to_sxp() tries to
collect information on a device that is being removed.

> OK?-2:
> The deivce class is 'tap2'.  Ideally, the device class should be 'tap'.
> Could you confirm information of xm list --long?

Yes, you are correct that the device shows up as 'tap2' before the
domain is created. This is because it is not known if the device will be
a blktap1 or blktap2 device until we call Blktap2Controller.createDevice().
However, since the domain is inactive and the devices have not been
created we do not need to know the 'actual' device class as there are no
entries in xenstore to remove. All deviceRemove does at that point is
remove the entry from the domain's config sxpr.

Thanks again,
Ryan
-- 
 Ryan O'Connor <rjo@xxxxxxxxx>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.