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

Re: [Xen-devel] [PATCH v8 00/15] execute hotplug scripts from libxl



Ian Campbell wrote:
(resending as I don't think I had SMTP setup properly on my laptop -- sorry if 
you get this twice!)

On Wed, 2012-07-04 at 07:59 -0400, Roger Pau Monne wrote:
This new serie (v8) fixes a code refactoring problem that was present
in v7 (06/15 changed code introduced by 05/15).

 From somewhere in here I'm seeing timeouts waiting for the b/e to go to
state 5 when doing cd-insert on an HVM guest. I suspect because this is
(or should be) turned into a virtual media change rather than an actual
device remove and insert?

BTW libxl_cdrom_insert hasn't been async'd up yet -- I was actually just
looking into that when I noticed this.

Ian.

         ~# xl -vvv cd-insert dHVM-1 hdc /scratch/mini.iso,raw
         libxl: debug: libxl.c:3074:libxl_device_disk_remove: ao 0x8069c30: 
create: how=(nil) callback=(nil) poller=0x8069a50
         libxl: debug: libxl_event.c:512:libxl__ev_xswatch_register: watch 
w=0x8069dcc wpath=/local/domain/0/backend/qdisk/43/5632/state token=3/0: 
register slotnum=3
         libxl: debug: libxl.c:3074:libxl_device_disk_remove: ao 0x8069c30: 
inprogress: poller=0x8069a50, flags=i
         libxl: debug: libxl_event.c:457:watchfd_callback: watch w=0x8069dcc 
wpath=/local/domain/0/backend/qdisk/43/5632/state token=3/0: event 
epath=/local/domain/0/backend/qdisk/43/5632/state
         libxl: debug: libxl_event.c:600:devstate_watch_callback: backend 
/local/domain/0/backend/qdisk/43/5632/state wanted state 6 still waiting state 5

         [... long wait ...]

         libxl: debug: libxl_event.c:614:devstate_timeout: backend 
/local/domain/0/backend/qdisk/43/5632/state wanted state 6  timed out
         libxl: debug: libxl_event.c:549:libxl__ev_xswatch_deregister: watch 
w=0x8069dcc wpath=/local/domain/0/backend/qdisk/43/5632/state token=3/0: 
deregister slotnum=3
         libxl: debug: libxl_event.c:561:libxl__ev_xswatch_deregister: watch 
w=0x8069dcc: deregister unregistered
         libxl: debug: libxl_event.c:512:libxl__ev_xswatch_register: watch 
w=0x8069dcc wpath=/local/domain/0/backend/qdisk/43/5632/state token=3/1: 
register slotnum=3
         libxl: debug: libxl_event.c:457:watchfd_callback: watch w=0x8069dcc 
wpath=/local/domain/0/backend/qdisk/43/5632/state token=3/1: event 
epath=/local/domain/0/backend/qdisk/43/5632/state
         libxl: debug: libxl_event.c:600:devstate_watch_callback: backend 
/local/domain/0/backend/qdisk/43/5632/state wanted state 6 still waiting state 5

         [... long wait ...]

         libxl: debug: libxl_event.c:614:devstate_timeout: backend 
/local/domain/0/backend/qdisk/43/5632/state wanted state 6  timed out
         libxl: debug: libxl_event.c:549:libxl__ev_xswatch_deregister: watch 
w=0x8069dcc wpath=/local/domain/0/backend/qdisk/43/5632/state token=3/1: 
deregister slotnum=3
         libxl: debug: libxl_event.c:561:libxl__ev_xswatch_deregister: watch 
w=0x8069dcc: deregister unregistered
         libxl: debug: libxl_device.c:759:device_backend_callback: unable to 
disconnect device with path /local/domain/0/backend/qdisk/43/5632
         libxl: debug: libxl_event.c:1434:libxl__ao_complete: ao 0x8069c30: 
complete, rc=0
         libxl: debug: libxl_event.c:1406:libxl__ao__destroy: ao 0x8069c30: 
destroy
         libxl: debug: libxl.c:1958:libxl_device_disk_add: ao 0x8069c30: 
create: how=(nil) callback=(nil) poller=0x8069a50
         libxl: debug: libxl_device.c:255:libxl__device_disk_set_backend: Disk 
vdev=hdc spec.backend=unknown
         libxl: debug: libxl_device.c:258:libxl__device_disk_set_backend:      
format=raw cdrom=yes
         libxl: debug: libxl_device.c:209:disk_try_backend: Disk vdev=hdc, 
backend phy unsuitable as phys path not a block device
         libxl: debug: libxl_device.c:216:disk_try_backend: Disk vdev=hdc, 
backend tap unsuitable because blktap not available
         libxl: debug: libxl_device.c:293:libxl__device_disk_set_backend: Disk 
vdev=hdc, using backend qdisk
         libxl: debug: libxl_event.c:1434:libxl__ao_complete: ao 0x8069c30: 
complete, rc=0
         libxl: debug: libxl.c:1971:libxl_device_disk_add: ao 0x8069c30: 
inprogress: poller=0x8069a50, flags=ic
         libxl: debug: libxl_event.c:1406:libxl__ao__destroy: ao 0x8069c30: 
destroy
         xc: debug: hypercall buffer: total allocations:2 total releases:2
         xc: debug: hypercall buffer: current allocations:0 maximum 
allocations:2
         xc: debug: hypercall buffer: cache current size:1
         xc: debug: hypercall buffer: cache hits:0 misses:1 toobig:1

Yes, this is due to the fact that Qemu (traditional at least) doesn't honour the connection/disconnection protocol, so neither removing the frontend or setting the backend to "closing" (5), will make Qemu disconnect the device. I used to have a special "dev->backend_type == QDISK" to skip the waiting, I've added it to my series again, and it should solve the waiting problem.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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