• E
    blockcommit: track job type in xml · 232a31be
    Eric Blake 提交于
    A future patch is going to wire up qemu active block commit jobs;
    but as they have similar events and are canceled/pivoted in the
    same way as block copy jobs, it is easiest to track all bookkeeping
    for the commit job by reusing the <mirror> element.  This patch
    adds domain XML to track which job was responsible for creating a
    mirroring situation, and adds a job='copy' attribute to all
    existing uses of <mirror>.  Along the way, it also massages the
    qemu monitor backend to read the new field in order to generate
    the correct type of libvirt job (even though it requires a
    future patch to actually cause a qemu event that can be reported
    as an active commit).  It also prepares to update persistent XML
    to match changes made to live XML when a copy completes.
    
    * docs/schemas/domaincommon.rng: Enhance schema.
    * docs/formatdomain.html.in: Document it.
    * src/conf/domain_conf.h (_virDomainDiskDef): Add a field.
    * src/conf/domain_conf.c (virDomainBlockJobType): String conversion.
    (virDomainDiskDefParseXML): Parse job type.
    (virDomainDiskDefFormat): Output job type.
    * src/qemu/qemu_process.c (qemuProcessHandleBlockJob): Distinguish
    active from regular commit.
    * src/qemu/qemu_driver.c (qemuDomainBlockCopy): Set job type.
    (qemuDomainBlockPivot, qemuDomainBlockJobImpl): Clean up job type
    on completion.
    * tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror-old.xml:
    Update tests.
    * tests/qemuxml2argvdata/qemuxml2argv-disk-mirror.xml: Likewise.
    * tests/qemuxml2argvdata/qemuxml2argv-disk-active-commit.xml: New
    file.
    * tests/qemuxml2xmltest.c (mymain): Drive new test.
    Signed-off-by: NEric Blake <eblake@redhat.com>
    232a31be
domain_conf.h 86.5 KB