| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
 [Xen-devel] hotplugStatusCallback 5 (device busy) error during	local live migration
 
 | The following error shows up in xend.log while doing a local live
migration of a 2.6.32 based PV guest running on a Xen 3.4.0 based
system: 
 [2010-12-28 09:00:51 4826] DEBUG (DevController:144)
Waiting for 51728.This message shows up in the domU's dmesg:[2010-12-28 09:00:51 4826] DEBUG (DevController:629)
hotplugStatusCallback
/local/domain/0/backend/vbd/5696/51728/hotplug-status.
 [2010-12-28 09:00:51 4826] DEBUG (DevController:643)
hotplugStatusCallback 5.
 [2010-12-28 09:00:51 4826] ERROR (XendCheckpoint:347) Device 51728
(vbd) could not be connected.
 
 
 vbd vbd-51728: 16 Device in use; refusing to closevm.cfg has:
 
 disk = 
['file:/OVS/seed_pool/OVM_EL5U5_X86_64_PVM_10GB/System.img,xvda,w','phy:/dev/sda1,xvdb,w']The messages do not occur after changing "w" to "w+" (may have been
"w!").  Is "w+" required for local migrations?  Is it masking an
underlying bug?
 
 waitForBackend() calls hotplugStatusCallback():
 
 xen/source/tools/python/xen/xend/server/DevController.py
waitForBackend() calls hotplugStatusCallback()
 556             xswatch(statusPath, hotplugStatusCallback,
ev, result)557
 558             ev.wait(DEVICE_CREATE_TIMEOUT)
 
 xen/source/tools/python/xen/xend/server/DevController.py
hotplugStatusCallback()This treats HOTPLUG_STATUS_BUSY as a one-time error.  It seems like it
should return 1 (keep watching) on HOTPLUG_STATUS_BUSY, something like:
 633     if status is not None:
 634         if status == HOTPLUG_STATUS_ERROR:
 635             result['status'] = Error
 636         elif status == HOTPLUG_STATUS_BUSY:
 637             result['status'] = Busy
 638         else:
 639             result['status'] = Connected
 640     else:
 641         return 1
 
 
      if status is not None:if status == HOTPLUG_STATUS_ERROR:
 result['status'] = Error
 elif status == HOTPLUG_STATUS_BUSY:
 -            result['status'] = Busy
 +           return 1
 else:
 result['status'] = Connected
 else:
 return 1
 
 We would time out if it it stays busy for DEVICE_CREATE_TIMEOUT.  Not
sure if we would need to do an unwatch in that case.
 
 Thanks,
 Chuck
 
 | 
 _______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 
 |