• E
    blockjob: add qemu capabilities related to block pull jobs · 2b085f5b
    Eric Blake 提交于
    RHEL 6.2 was released with an early version of block jobs, which only
    worked on the qed file format, where the commands were spelled with
    underscore (contrary to QMP style), and where 'block_job_cancel' was
    synchronous and did not trigger an event.
    
    The upcoming qemu 1.1 release has fixed these short-comings [1][2]:
    the commands now work on multiple file types, are spelled with dash,
    and 'block-job-cancel' is asynchronous and emits an event upon conclusion.
    
    [1]qemu commit 370521a1d6f5537ea7271c119f3fbb7b0fa57063
    [2]https://lists.gnu.org/archive/html/qemu-devel/2012-04/msg01248.html
    
    This patch recognizes the new spellings, and fixes virDomainBlockRebase
    to give a graceful error when talking to a too-old qemu on a partial
    rebase attempt.  Fixes for the new semantics will come later.  This
    patch also removes a bogus ATTRIBUTE_NONNULL mistakenly added in
    commit 10ec36e2.
    
    * src/qemu/qemu_capabilities.h (QEMU_CAPS_BLOCKJOB_SYNC)
    (QEMU_CAPS_BLOCKJOB_ASYNC): New bits.
    * src/qemu/qemu_capabilities.c (qemuCaps): Name them.
    * src/qemu/qemu_monitor_json.c (qemuMonitorJSONCheckCommands): Set
    them.
    (qemuMonitorJSONBlockJob): Manage both command names.
    (qemuMonitorJSONDiskSnapshot): Minor formatting fix.
    * src/qemu/qemu_monitor.h (qemuMonitorBlockJob): Alter signature.
    * src/qemu/qemu_monitor_json.h (qemuMonitorJSONBlockJob): Likewise.
    * src/qemu/qemu_monitor.c (qemuMonitorBlockJob): Pass through
    capability bit.
    * src/qemu/qemu_driver.c (qemuDomainBlockJobImpl): Update callers.
    2b085f5b
qemu_monitor.c 77.1 KB