Skip to content

Tags

Tags give the ability to mark specific points in history as being important
  • qemu-kvm-5.2.0-16.module+el8.4.0+11721+c8bbc1be.3
    Update to qemu-kvm-5.2.0-16.module+el8.4.0+11721+c8bbc1be.3
  • qemu-kvm-6.0.0-22.module+el8.5.0+11695+95588379
    Update to qemu-kvm-6.0.0-22.module+el8.5.0+11695+95588379
  • qemu-kvm-2.12.0-99.module+el8.2.0+11704+da06378b.6
    Update to qemu-kvm-2.12.0-99.module+el8.2.0+11704+da06378b.6
  • qemu-kvm-4.2.0-48.module+el8.4.0+11703+fdb2823a.2
    Update to qemu-kvm-4.2.0-48.module+el8.4.0+11703+fdb2823a.2
  • qemu-kvm-4.2.0-53.module+el8.5.0+11673+72138537
    Update to qemu-kvm-4.2.0-53.module+el8.5.0+11673+72138537
  • python-async-qmp-aqmp-v1
    python: introduce Asynchronous QMP package
    
    GitLab: https://gitlab.com/jsnow/qemu/-/commits/python-async-qmp-aqmp
    CI: https://gitlab.com/jsnow/qemu/-/pipelines/330003554
    Docs: https://people.redhat.com/~jsnow/sphinx/html/qemu.aqmp.html
    Based-on: <20210701020921.1679468-1-jsnow@redhat.com>
              [PULL 00/15] Python patches
    
    Hi!
    
    This patch series adds an Asynchronous QMP package to the Python
    library. It offers a few improvements over the previous library:
    
    - out-of-band support
    - true asynchronous event support
    - avoids undocumented interfaces abusing non-blocking sockets
    
    This library serves as the basis for a new qmp-shell program that will
    offer improved reconnection support, true asynchronous display of
    events, VM and job status update notifiers, and so on.
    
    My intent is to eventually publish this library directly to PyPI as a
    standalone package. I would like to phase out our usage of the old QMP
    library over time; eventually replacing it entirely with this one.
    
    This series looks big by line count, but it's *mostly*
    docstrings. Seriously!
    
    This package has *no* external dependencies whatsoever.
    
    Notes & Design
    ==============
    
    Here are some notes on the design of how the library works, to serve as
    a primer for review; however I also **highly recommend** browsing the
    generated Sphinx documentation for this series.
    
    Here's that link again:
    https://people.redhat.com/~jsnow/sphinx/html/qemu.aqmp.html
    
    The core machinery is split between the AsyncProtocol and QMP
    classes. AsyncProtocol provides the generic machinery, while QMP
    provides the QMP-specific details.
    
    The design uses two independent coroutines that act as the "bottom
    half", a writer task and a reader task. These tasks run for the duration
    of the connection and independently send and receive messages,
    respectively.
    
    A third task, disconnect, is scheduled asynchronously whenever an
    unrecoverable error occurs and facilitates coalescing of the other two
    tasks.
    
    This diagram for how execute() operates may be helpful for understanding
    how AsyncProtocol is laid out. The arrows indicate the direction of a
    QMP message; the long horizontal dash indicates the separation between
    the upper and lower half of the event loop. The queue mechanisms between
    both dashes serve as the intermediaries between the upper and lower
    half.
    
                           +---------+
                           | caller  |
                           +---------+
                               ^ |
                               | v
                           +---------+
         +---------------> |execute()| -----------+
         |                 +---------+            |
         |                                        |
    [-----------------------------------------------------------]
         |                                        |
         |                                        v
    +----+------+    +----------------+    +------+-------+
    | ExecQueue |    | EventListeners |    |Outbound Queue|
    +----+------+    +----+-----------+    +------+-------+
         ^                ^                       |
         |                |                       |
    [-----------------------------------------------------------]
         |                |                       |
         |                |                       v
      +--+----------------+---+       +-----------+-----------+
      | Reader Task/Coroutine |       | Writer Task/Coroutine |
      +-----------+-----------+       +-----------+-----------+
                  ^                               |
                  |                               v
            +-----+------+                  +-----+------+
            |StreamReader|                  |StreamWriter|
            +------------+                  +------------+
    
    The caller will invoke execute(), which in turn will deposit a message
    in the outbound send queue. This will wake up the writer task, which
    well send the message over the wire.
    
    The execute() method will then yield to wait for a reply delivered to an
    execution queue created solely for that execute statement.
    
    When a message arrives, the Reader task will unblock and route the
    message either to the EventListener subsystem, or place it in the
    appropriate pending execution queue.
    
    Once a message is placed in the pending execution queue, execute() will
    unblock and the execution will conclude, returning the result of the RPC
    call to the caller.
    
    Ugly Bits
    =========
    
    - MultiException is ... wonky. I am still working out how to avoid needing it.
      See patch 04/20 for details here, or see
      https://people.redhat.com/~jsnow/sphinx/html/qemu.aqmp.error.html
    
      Patch 06/20 also goes into details of the ugliness; see
      AsyncProtocol._results or view the same information here:
      https://people.redhat.com/~jsnow/sphinx/html/_modules/qemu/aqmp/protocol.html#AsyncProtocol._results
    
    - There are quite a few lingering questions I have over the design of the
      EventListener subsystem; I wrote about those ugly bits in excruciating detail
      in patch 14/20.
    
      You can view them formatted nicely here:
      https://people.redhat.com/~jsnow/sphinx/html/qemu.aqmp.events.html#experimental-interfaces-design-issues
    
    Patch Layout
    ============
    
    Patches 1-2 are tiny pylint configuration changes.
    Patches 3-5 begin to check in Async QMP components, they are small.
    Patches 6-11 add a generic async message-based protocol class,
                 AsyncProto. They are split as small as I could
                 reasonably split them.
    Patches 12-14 check in more QMP-specific components.
    Patches 15-18 add qmp_protocol.py, the new 'QMP' class. They're split as
                  far down as I could, I hope they're easy to review.
    Patches 19-20 add a few finishing touches, they are small patches.
    
    Future Work
    ===========
    
    These items are in progress:
    
    - A Synchronous QMP wrapper that allows this library to be easily used
      from non-async code; this will also allow me to prove it works well by
      demoing its replacement throughout iotests.
    
    - A QMP server class; to facilitate writing of unit tests.
    
    - Unit tests. Real unit tests.
    
    If you made it this far in the cover letter, congrats :)
  • qemu-kvm-6.0.0-7.el9
    Update to qemu-kvm-6.0.0-7.el9
  • floppy-pull-request
    FDC Pull request
    
  • qemu-kvm-6.0.0-21.module+el8.5.0+11555+e0ab0d09
    Update to qemu-kvm-6.0.0-21.module+el8.5.0+11555+e0ab0d09
  • qemu-kvm-5.2.0-16.module+el8.4.0+11536+725e25d9.2
    Update to qemu-kvm-5.2.0-16.module+el8.4.0+11536+725e25d9.2
  • qemu-kvm-6.0.0-20.module+el8.5.0+11499+199527ef
    Update to qemu-kvm-6.0.0-20.module+el8.5.0+11499+199527ef
  • qemu-kvm-6.0.0-6.el9
    Update to qemu-kvm-6.0.0-6.el9
  • slirp-85av-v1
    slirp CVE-2021-3592/3593/3594/3595
    
    BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1970850
    BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1970858
    BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1970842
    BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1970823
    BRANCH: rhel-av-8.5.0
    BREW: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=37588329
  • qapi-if-v6
    qapi: untie 'if' conditions from C preprocessor
    
    Hi,
    
    This series makes the 'if' conditions less liberal, by formalizing a simple
    expression tree based on bare boolean logic of configure option identifiers.
    
    (this allows to express conditions in Rust in my QAPI-Rust PoC series)
    
    thanks
    
    v6: after Markus review
     - drop the predicate tree, QAPISchemaIfCond simply holds the original object
     - introduce the dict operations ('all', 'any', 'not') in multiple patches
     - split QAPISchemaIfCond introduction in multiple patches
     - replace __bool__ usage with is_present()
     - removed __eq__
     - move cgen/docgen implementation to common.py
     - doc & commit message updates
     - rebased
    
    v5:
     - drop the [ COND, ... ] sugar form
     - move documentation update as first patch
     - documentation and commit message tweaks
    
    v4:
     - keep gen_if/gen_endif in common.py, reducing C codegen in schema.py
     - raise NotImplemented instead of False for unhandled __eq__
     - change check_if() to keep the json/raw form, add _make_if() to build a
       QAPISchemaIfCond
     - improve __repr__ usage
     - drop ABC usage
     - tweaks here and there
     - add various commit tags
    
    v3:
     - rebasing on queued pt4 (after waiting for it to land)
     - improve documentation generation, to be more human-friendly
     - drop typing annotations from schema.py (not yet queued)
     - commit message tweaks
    
    v2:
     - fix the normalization step to handle recursive expr
     - replace IfCond by QAPISchemaIf (JohnS)
     - commit message and documentation tweaks
     - mypy/flake8/isort
  • qemu-kvm-4.2.0-52.module+el8.5.0+11386+ef5875dd
    Update to qemu-kvm-4.2.0-52.module+el8.5.0+11386+ef5875dd
  • qemu-kvm-6.0.0-19.module+el8.5.0+11385+6e7d542e
    Update to qemu-kvm-6.0.0-19.module+el8.5.0+11385+6e7d542e
  • qemu-kvm-5.2.0-16.module+el8.4.0+11358+3b8f35f7.1
    Update to qemu-kvm-5.2.0-16.module+el8.4.0+11358+3b8f35f7.1
  • rhbz-1967716-v1
    qga: public ssh injection api support
    
    BZ: 1967716
    BRANCH: rhel-8.5.0
    UPSTREAM: merged
    BREW: 37334432
    
    Straightforward backport, with a few minor conflicts.
    
    Note: the unit tests are not being run in rhel8, as they require glib 2.60
    G_TEST_OPTION_ISOLATE_DIRS. Rely on QA testing.
  • qapi-if-v5
    qapi: untie 'if' conditions from C preprocessor
    
    Hi,
    
    This series makes the 'if' conditions less liberal, by formalizing a simple
    expression tree based on bare boolean logic of configure option identifiers.
    
    (this allows to express conditions in Rust in my QAPI-Rust PoC series)
    
    thanks
    
    v5:
     - drop the [ COND, ... ] sugar form
     - move documentation update as first patch
     - documentation and commit message tweaks
    
    v4:
     - keep gen_if/gen_endif in common.py, reducing C codegen in schema.py
     - raise NotImplemented instead of False for unhandled __eq__
     - change check_if() to keep the json/raw form, add _make_if() to build a
       QAPISchemaIfCond
     - improve __repr__ usage
     - drop ABC usage
     - tweaks here and there
     - add various commit tags
    
    v3:
     - rebasing on queued pt4 (after waiting for it to land)
     - improve documentation generation, to be more human-friendly
     - drop typing annotations from schema.py (not yet queued)
     - commit message tweaks
    
    v2:
     - fix the normalization step to handle recursive expr
     - replace IfCond by QAPISchemaIf (JohnS)
     - commit message and documentation tweaks
     - mypy/flake8/isort
  • qemu-kvm-6.0.0-5.el9
    Update to qemu-kvm-6.0.0-5.el9