Hi there, There are people who want to use QMP for thin provisioning. That's, the VM is started with a small storage and when a no space error is triggered, more space is allocated and the VM is put to run again.
QMP has two limitations that prevent people from doing this today: 1. The BLOCK_IO_ERROR doesn't contain error information 2. Considering we solve item 1, we still have to provide a way for clients to query why a VM stopped. This is needed because clients may miss the BLOCK_IO_ERROR event or may connect to the VM while it's already stopped A proposal to solve both problems follow. A. BLOCK_IO_ERROR information ----------------------------- We already have discussed this a lot, but didn't reach a consensus. My solution is quite simple: to add a stringfied errno name to the BLOCK_IO_ERROR event, for example (see the "reason" key): { "event": "BLOCK_IO_ERROR", "data": { "device": "ide0-hd1", "operation": "write", "action": "stop", "reason": "enospc", } "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } Valid error reasons could be: "enospc", "eio", etc. B. query-stop-reason -------------------- I also have a simple solution for item 2. The vm_stop() accepts a reason argument, so we could store it somewhere and return it as a string, like: -> { "execute": "query-stop-reason" } <- { "return": { "reason": "user" } } Valid reasons could be: "user", "debug", "shutdown", "diskfull" (hey, this should be "ioerror", no?), "watchdog", "panic", "savevm", "loadvm", "migrate". Also note that we have a STOP event. It should be extended with the stop reason too, for completeness.