Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: qemu/qemu
base: 792f77f376ad
Choose a base ref
...
head repository: qemu/qemu
compare: 271477b59e72
Choose a head ref
  • 14 commits
  • 8 files changed
  • 2 contributors

Commits on May 8, 2023

  1. qtest/migration-test.c: Add tests with compress enabled

    There has never been tests for migration with compress enabled.
    
    Add suitable tests, testing with compress-wait-thread = false
    too.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Acked-by: Peter Xu <peterx@redhat.com>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    1536d1d View commit details
    Browse the repository at this point in the history
  2. qtest/migration-test.c: Add postcopy tests with compress enabled

    Add postcopy tests with compress enabled to ensure nothing breaks
    with the refactoring in the next commits.
    
    preempt+compress is blocked, so no test needed for that case.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    dc066da View commit details
    Browse the repository at this point in the history
  3. ram.c: Let the compress threads return a CompressResult enum

    This will be used in the next commits to move save_page_header()
    out of compress code.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    97274a8 View commit details
    Browse the repository at this point in the history
  4. ram.c: Dont change param->block in the compress thread

    Instead introduce a extra parameter to trigger the compress thread.
    Now, when the compress thread is done, we know what RAMBlock and
    offset it did compress.
    
    This will be used in the next commits to move save_page_header()
    out of compress code.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    10c2f7b View commit details
    Browse the repository at this point in the history
  5. ram.c: Reset result after sending queued data

    And take the param->mutex lock for the whole section to ensure
    thread-safety.
    Now, it is explicitly clear if there is no queued data to send.
    Before, this was handled by param->file stream being empty and thus
    qemu_put_qemu_file() not sending anything.
    
    This will be used in the next commits to move save_page_header()
    out of compress code.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    b5cf1cd View commit details
    Browse the repository at this point in the history
  6. ram.c: Do not call save_page_header() from compress threads

    save_page_header() accesses several global variables, so calling it
    from multiple threads is pretty ugly.
    
    Instead, call save_page_header() before writing out the compressed
    data from the compress buffer to the migration stream.
    
    This also makes the core compress code more independend from ram.c.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    3e81763 View commit details
    Browse the repository at this point in the history
  7. ram.c: Call update_compress_thread_counts from compress_send_queued_data

    This makes the core compress code more independend from ram.c.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    680628d View commit details
    Browse the repository at this point in the history
  8. ram.c: Remove last ram.c dependency from the core compress code

    Make compression interfaces take send_queued_data() as an argument.
    Remove save_page_use_compression() from flush_compressed_data().
    
    This removes the last ram.c dependency from the core compress code.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    ef4f5f5 View commit details
    Browse the repository at this point in the history
  9. ram.c: Move core compression code into its own file

    No functional changes intended.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    b5ca336 View commit details
    Browse the repository at this point in the history
  10. ram.c: Move core decompression code into its own file

    No functional changes intended.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    b1f1772 View commit details
    Browse the repository at this point in the history
  11. ram compress: Assert that the file buffer matches the result

    Before this series, "nothing to send" was handled by the file buffer
    being empty. Now it is tracked via param->result.
    
    Assert that the file buffer state matches the result.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    4024cc8 View commit details
    Browse the repository at this point in the history
  12. ram-compress.c: Make target independent

    Make ram-compress.c target independent.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    52623f2 View commit details
    Browse the repository at this point in the history
  13. migration: Initialize and cleanup decompression in migration.c

    This fixes compress with colo.
    
    Signed-off-by: Lukas Straub <lukasstraub2@web.de>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Juan Quintela <quintela@redhat.com>
    Lukey3332 authored and Juan Quintela committed May 8, 2023
    Copy the full SHA
    c323518 View commit details
    Browse the repository at this point in the history
  14. Merge tag 'compression-code-pull-request' of https://gitlab.com/juan.…

    …quintela/qemu into staging
    
    Migration PULL request (20230508 edition, take 2)
    
    Hi
    
    This is just the compression bits of the Migration PULL request for
    20230428.  Only change is that we don't run the compression tests by
    default.
    
    The problem already exist with compression code.  The test just show
    that it don't work.
    
    - Add migration tests for (old) compress migration code (lukas)
    - Make compression code independent of ram.c (lukas)
    - Move compression code into ram-compress.c (lukas)
    
    Please apply, Juan.
    
    # -----BEGIN PGP SIGNATURE-----
    #
    # iQIzBAABCAAdFiEEGJn/jt6/WMzuA0uC9IfvGFhy1yMFAmRZRMwACgkQ9IfvGFhy
    # 1yOdixAA1fOLanaYMUJZGLZ9sVTt7rDc4AEPRGkQOYYZNGK3LHaG2Dx9ob2/CEkS
    # /YPp9Oth9QAYHZgiI2Xx8GSg98PRVr9b/GlQPseoCOFXnUL89rTpQtxQq4CV41E6
    # AA5Dr8Z07hsr47ERQERFfDGD4zsvpn+NWM1ZBy+CCilf/o8UU4eIyfRF34YgSScv
    # FVdWM4czUKei9fe2Go1KnMCz1GnT/6epl47Hs8zn9WAEeUfLILp7dbkbNq26F65G
    # 8YC8YnrikxU+2j+NIyIbRxbIdjR+JUbR14AyezwWZ2zGbirwWN1DP2WQx0QIZOqM
    # ZuCqIDj5HpNSlHmShI0gNDfPvs+iM+sFSwQ7JE8Q03hlES9HF5c+MOr3Pl3J91hH
    # EEmkk5gBJ2v2tvBuHgwVAQ2UH1+XT+a7RXeoMU1iizc2sXRGDK12ZsyaAg4D0oaF
    # eohzJk2j1QXcx/DNK2G5uhzwgKvKv1/+rHyYQFtg+XuWVVipSNwqRjDJkDANAYZP
    # VwKOOqDd5lHLOIzE1j61Yu06DJhkSoMvz74RQlqnk+r1EKJcTUZL52uhQor//DaL
    # ULpBsgYzoMUMrtw7myHxq4t0t6mmOtOkb0CvO8dTzkIV0YgIFTtPFB0ySXOFUFf5
    # UoFoMFKlfbPpDsvTNEVErxpaG4FBwZNVt67V2KXQ53xRPShyBiQ=
    # =SG8L
    # -----END PGP SIGNATURE-----
    # gpg: Signature made Mon 08 May 2023 07:51:56 PM BST
    # gpg:                using RSA key 1899FF8EDEBF58CCEE034B82F487EF185872D723
    # gpg: Good signature from "Juan Quintela <quintela@redhat.com>" [undefined]
    # gpg:                 aka "Juan Quintela <quintela@trasno.org>" [undefined]
    # gpg: WARNING: This key is not certified with a trusted signature!
    # gpg:          There is no indication that the signature belongs to the owner.
    # Primary key fingerprint: 1899 FF8E DEBF 58CC EE03  4B82 F487 EF18 5872 D723
    
    * tag 'compression-code-pull-request' of https://gitlab.com/juan.quintela/qemu:
      migration: Initialize and cleanup decompression in migration.c
      ram-compress.c: Make target independent
      ram compress: Assert that the file buffer matches the result
      ram.c: Move core decompression code into its own file
      ram.c: Move core compression code into its own file
      ram.c: Remove last ram.c dependency from the core compress code
      ram.c: Call update_compress_thread_counts from compress_send_queued_data
      ram.c: Do not call save_page_header() from compress threads
      ram.c: Reset result after sending queued data
      ram.c: Dont change param->block in the compress thread
      ram.c: Let the compress threads return a CompressResult enum
      qtest/migration-test.c: Add postcopy tests with compress enabled
      qtest/migration-test.c: Add tests with compress enabled
    
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 8, 2023
    Copy the full SHA
    271477b View commit details
    Browse the repository at this point in the history