Skip to content
Snippets Groups Projects
  1. Sep 17, 2020
  2. Sep 16, 2020
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/cschoenebeck/tags/pull-9p-20200915' into staging · 8ee61272
      Peter Maydell authored
      The intention of the following two patches is making users aware about
      the negative file I/O performance impact when using a very low value
      for 9P client parameter 'msize', which especially is the case if no
      'msize' parameter was supplied by the user with a 9P Linux client at all.
      
      All it does is logging a performance warning on host side (once) in
      that case. By setting 'msize' on client side to any value larger than
      8192 the performance warning will disappear.
      
      See https://wiki.qemu.org/Documentation/9psetup#msize
      
       for details.
      
      # gpg: Signature made Tue 15 Sep 2020 11:37:32 BST
      # gpg:                using RSA key 96D8D110CF7AF8084F88590134C2B58765A47395
      # gpg:                issuer "qemu_oss@crudebyte.com"
      # gpg: Good signature from "Christian Schoenebeck <qemu_oss@crudebyte.com>" [unknown]
      # 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: ECAB 1A45 4014 1413 BA38  4926 30DB 47C3 A012 D5F4
      #      Subkey fingerprint: 96D8 D110 CF7A F808 4F88  5901 34C2 B587 65A4 7395
      
      * remotes/cschoenebeck/tags/pull-9p-20200915:
        9pfs: disable msize warning for synth driver
        9pfs: log warning if msize <= 8192
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      8ee61272
  3. Sep 15, 2020
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/kraxel/tags/vga-20200915-pull-request' into staging · de39a045
      Peter Maydell authored
      
      vga: fix qxl modular build.
      vga: add support for virtio-gpu modular builds.
      
      # gpg: Signature made Tue 15 Sep 2020 14:08:53 BST
      # gpg:                using RSA key 4CB6D8EED3E87138
      # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full]
      # gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>" [full]
      # gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full]
      # Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138
      
      * remotes/kraxel/tags/vga-20200915-pull-request:
        virtio-gpu: build modular
        virtio-gpu: make virtio_gpu_ops static
        object_initialize: try module load
        meson: remove duplicate qxl sources
        meson: fix module config
        meson: fix qxl dependencies
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      de39a045
    • Gerd Hoffmann's avatar
      virtio-gpu: build modular · 7b0de5b7
      Gerd Hoffmann authored
      
      Only build virtio-gpu-device modular (the code which actually depends on
      the external virglrenderer library).  virtio-gpu-pci and virtio-vga are
      compiled into core qemu still.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      Message-id: 20200914134224.29769-7-kraxel@redhat.com
      7b0de5b7
    • Gerd Hoffmann's avatar
      virtio-gpu: make virtio_gpu_ops static · 3b593b3f
      Gerd Hoffmann authored
      
      Reference it via ops pointer instead, simliar to the vga one.
      Removes hard symbol reference, needed to build virtio-gpu modular.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      Message-id: 20200914134224.29769-6-kraxel@redhat.com
      3b593b3f
    • Gerd Hoffmann's avatar
      object_initialize: try module load · 64f7aece
      Gerd Hoffmann authored
      
      Needed to allow virtio-gpu-pci initialize the
      virtio-gpu-device child device.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      Message-id: 20200914134224.29769-5-kraxel@redhat.com
      64f7aece
    • Gerd Hoffmann's avatar
      meson: remove duplicate qxl sources · f84698ee
      Gerd Hoffmann authored
      
      We should add sources to the softmmu_ss or module_ss but not both.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      Message-id: 20200914134224.29769-4-kraxel@redhat.com
      f84698ee
    • Gerd Hoffmann's avatar
      meson: fix module config · 3e292c51
      Gerd Hoffmann authored
      
      Use all config symbols not only the host ones.
      Needed to make sure device configs like CONFIG_QXL
      are used for modules too.
      
      Suggested-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      Message-id: 20200914134224.29769-3-kraxel@redhat.com
      3e292c51
    • Gerd Hoffmann's avatar
      meson: fix qxl dependencies · e3624e8b
      Gerd Hoffmann authored
      
      Add pixman and spice deps to qxl module.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      Message-id: 20200914134224.29769-2-kraxel@redhat.com
      e3624e8b
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/otubo/tags/pull-seccomp-20200915' into staging · 6c938efc
      Peter Maydell authored
      
      seccomp branch queue
      
      # gpg: Signature made Tue 15 Sep 2020 11:58:27 BST
      # gpg:                using RSA key D67E1B50937486B40723DBABDF32E7C0F0FFF9A2
      # gpg:                issuer "otubo@redhat.com"
      # gpg: Good signature from "Eduardo Otubo (Senior Software Engineer) <otubo@redhat.com>" [full]
      # Primary key fingerprint: D67E 1B50 9374 86B4 0723  DBAB DF32 E7C0 F0FF F9A2
      
      * remotes/otubo/tags/pull-seccomp-20200915:
        seccomp: fix killing of whole process instead of thread
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      6c938efc
    • Daniel P. Berrangé's avatar
      seccomp: fix killing of whole process instead of thread · e474e3aa
      Daniel P. Berrangé authored
      
      Back in 2018 we introduced support for killing the whole QEMU process
      instead of just one thread, when a seccomp rule is violated:
      
        commit bda08a57
        Author: Marc-André Lureau <marcandre.lureau@redhat.com>
        Date:   Wed Aug 22 19:02:48 2018 +0200
      
          seccomp: prefer SCMP_ACT_KILL_PROCESS if available
      
      Fast forward a year and we introduced a patch to avoid killing the
      process for resource control syscalls tickled by Mesa.
      
        commit 9a1565a0
        Author: Daniel P. Berrangé <berrange@redhat.com>
        Date:   Wed Mar 13 09:49:03 2019 +0000
      
          seccomp: don't kill process for resource control syscalls
      
      Unfortunately a logic bug effectively reverted the first commit
      mentioned so that we go back to only killing the thread, not the whole
      process.
      
      Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Acked-by: default avatarEduardo Otubo <otubo@redhat.com>
      e474e3aa
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2020-09-15' into staging · 9b14671a
      Peter Maydell authored
      
      Block patches:
      - Several qcow2 fixes and refactorings
      - Let qemu-img convert try to stay at cluster boundaries
      - Stable child names for quorum (with x-blockdev-change)
      - Explicitly drop vhdx 4k sector support, as it was never actually
        working
      - rbd: Mark @namespace a strong runtime option
      - iotests.py improvements
      - Drop unused runtime_opts objects
      - Skip a test case in 030 when run through make check-block
      
      # gpg: Signature made Tue 15 Sep 2020 11:27:05 BST
      # gpg:                using RSA key 91BEB60A30DB3E8857D11829F407DB0061D5CF40
      # gpg:                issuer "mreitz@redhat.com"
      # gpg: Good signature from "Max Reitz <mreitz@redhat.com>" [full]
      # Primary key fingerprint: 91BE B60A 30DB 3E88 57D1  1829 F407 DB00 61D5 CF40
      
      * remotes/maxreitz/tags/pull-block-2020-09-15: (22 commits)
        block/rbd: add 'namespace' to qemu_rbd_strong_runtime_opts[]
        qcow2: Convert qcow2_alloc_cluster_offset() into qcow2_alloc_host_offset()
        qcow2: Make preallocate_co() resize the image to the correct size
        block/qcow: remove runtime opts
        block/rbd: remove runtime_opts
        qcow2: Return the original error code in qcow2_co_pwrite_zeroes()
        qcow2: Make qcow2_free_any_clusters() free only one cluster
        qcow2: Handle QCowL2Meta on error in preallocate_co()
        block/vhdx: Support vhdx image only with 512 bytes logical sector size
        iotests: Skip test_stream_parallel in test 030 when doing "make check"
        qemu-img: Explicit number replaced by a constant
        qcow2: Rewrite the documentation of qcow2_alloc_cluster_offset()
        qcow2: Don't check nb_clusters when removing l2meta from the list
        qcow2: Fix removal of list members from BDRVQcow2State.cluster_allocs
        qcow2: Use macros for the L1, refcount and bitmap table entry sizes
        qemu-img: avoid unaligned read requests during convert
        block/quorum.c: stable children names
        qemu-iotests: Simplify FilePath __init__
        qemu-iotests: Merge FilePaths and FilePath
        qemu-iotests: Support varargs syntax in FilePaths
        ...
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      9b14671a
    • Christian Schoenebeck's avatar
      9pfs: disable msize warning for synth driver · c418f935
      Christian Schoenebeck authored
      
      Previous patch introduced a performance warning being logged on host
      side if client connected with an 'msize' <= 8192. Disable this
      performance warning for the synth driver to prevent that warning from
      being printed whenever the 9pfs (qtest) test cases are running.
      
      Introduce a new export flag V9FS_NO_PERF_WARN for that purpose, which
      might also be used to disable such warnings from the CLI in future.
      
      We could have also prevented the warning by simply raising P9_MAX_SIZE
      in virtio-9p-test.c to any value larger than 8192, however in the
      context of test cases it makes sense running for edge cases, which
      includes the lowest 'msize' value supported by the server which is
      4096, hence we want to preserve an msize of 4096 for the test client.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Reviewed-by: default avatarGreg Kurz <groug@kaod.org>
      Message-Id: <E1kEyDy-0006nN-5A@lizzy.crudebyte.com>
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      c418f935
    • Christian Schoenebeck's avatar
      9pfs: log warning if msize <= 8192 · 62777d82
      Christian Schoenebeck authored
      
      It is essential to choose a reasonable high value for 'msize' to avoid
      severely degraded file I/O performance. This parameter can only be
      chosen on client/guest side, and a Linux client defaults to an 'msize'
      of only 8192 if the user did not explicitly specify a value for 'msize',
      which results in very poor file I/O performance.
      
      Unfortunately many users are not aware that they should specify an
      appropriate value for 'msize' to avoid severe performance issues, so
      log a performance warning (with a QEMU wiki link explaining this issue
      in detail) on host side in that case to make it more clear.
      
      Currently a client cannot automatically pick a reasonable value for
      'msize', because a good value for 'msize' depends on the file I/O
      potential of the underlying storage on host side, i.e. a feature
      invisible to the client, and even then a user would still need to trade
      off between performance profit and additional RAM costs, i.e. with
      growing 'msize' (RAM occupation), performance still increases, but
      performance delta will shrink continuously.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Reviewed-by: default avatarGreg Kurz <groug@kaod.org>
      Message-Id: <e6fc84845c95816ad5baecb0abd6bfefdcf7ec9f.1599144062.git.qemu_oss@crudebyte.com>
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      62777d82
    • Stefano Garzarella's avatar
      block/rbd: add 'namespace' to qemu_rbd_strong_runtime_opts[] · 7bae7c80
      Stefano Garzarella authored
      Commit 19ae9ae0 ("block/rbd: Add support for ceph namespaces")
      introduced namespace support for RBD, but we forgot to add the
      new 'namespace' options to qemu_rbd_strong_runtime_opts[].
      
      The 'namespace' is used to identify the image, so it is a strong
      option since it can changes the data of a BDS.
      
      Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1821528
      
      
      Fixes: 19ae9ae0 ("block/rbd: Add support for ceph namespaces")
      Cc: Florian Florensa <fflorensa@online.net>
      Signed-off-by: default avatarStefano Garzarella <sgarzare@redhat.com>
      Message-Id: <20200914190553.74871-1-sgarzare@redhat.com>
      Reviewed-by: default avatarJason Dillaman <dillaman@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      7bae7c80
    • Alberto Garcia's avatar
      qcow2: Convert qcow2_alloc_cluster_offset() into qcow2_alloc_host_offset() · bfd0989a
      Alberto Garcia authored
      
      qcow2_alloc_cluster_offset() takes an (unaligned) guest offset and
      returns the (aligned) offset of the corresponding cluster in the qcow2
      image.
      
      In practice none of the callers need to know where the cluster starts
      so this patch makes the function calculate and return the final host
      offset directly. The function is also renamed accordingly.
      
      See 388e5816 for a similar change to qcow2_get_cluster_offset().
      
      Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
      Message-Id: <9bfef50ec9200d752413be4fc2aeb22a28378817.1599833007.git.berto@igalia.com>
      Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      bfd0989a
    • Alberto Garcia's avatar
      qcow2: Make preallocate_co() resize the image to the correct size · 8e958260
      Alberto Garcia authored
      
      This function preallocates metadata structures and then extends the
      image to its new size, but that new size calculation is wrong because
      it doesn't take into account that the host_offset variable is always
      cluster-aligned.
      
      This problem can be reproduced with preallocation=metadata when the
      original size is not cluster-aligned but the new size is. In this case
      the final image size will be shorter than expected.
      
         qemu-img create -f qcow2 img.qcow2 31k
         qemu-img resize --preallocation=metadata img.qcow2 128k
      
      Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
      Message-Id: <adeb8b059917b141d5f5b3bd2a016262d3052c79.1599833007.git.berto@igalia.com>
      Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
      [mreitz: Mark compat=0.10 unsupported for iotest 125]
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      8e958260
    • John Snow's avatar
      block/qcow: remove runtime opts · c1dadda0
      John Snow authored
      
      Introduced by d85f4222,
      These were seemingly never used at all.
      
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Message-Id: <20200806211345.2925343-3-jsnow@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      c1dadda0
    • John Snow's avatar
      block/rbd: remove runtime_opts · 30b70f07
      John Snow authored
      
      This saw its last use in 4bfb2741.
      
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Message-Id: <20200806211345.2925343-2-jsnow@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      30b70f07
    • Alberto Garcia's avatar
      qcow2: Return the original error code in qcow2_co_pwrite_zeroes() · 580384d6
      Alberto Garcia authored
      
      This function checks the current status of a (sub)cluster in order to
      see if an unaligned 'write zeroes' request can be done efficiently by
      simply updating the L2 metadata and without having to write actual
      zeroes to disk.
      
      If the situation does not allow using the fast path then the function
      returns -ENOTSUP and the caller falls back to writing zeroes.
      
      If can happen however that the aforementioned check returns an actual
      error code so in this case we should pass it to the caller.
      
      Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
      Message-Id: <20200909123739.719-1-berto@igalia.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      580384d6
    • Alberto Garcia's avatar
      qcow2: Make qcow2_free_any_clusters() free only one cluster · 3fec237f
      Alberto Garcia authored
      
      This function takes an L2 entry and a number of clusters to free.
      Although in principle it can free any type of cluster (using the L2
      entry to determine its type) in practice the API is broken because
      compressed clusters have a variable size and there is no way to free
      more than one without having the L2 entry of each one of them.
      
      The good news all callers are passing nb_clusters=1 so we can simply
      get rid of that parameter.
      
      Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
      Message-Id: <77cea0f4616f921d37e971b3c5b18a2faa24b173.1599573989.git.berto@igalia.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      3fec237f
    • Alberto Garcia's avatar
      qcow2: Handle QCowL2Meta on error in preallocate_co() · 1a52b73d
      Alberto Garcia authored
      
      If qcow2_alloc_cluster_offset() or qcow2_alloc_cluster_link_l2() fail
      then this function simply returns the error code, potentially leaking
      the QCowL2Meta structure and leaving stale items in s->cluster_allocs.
      
      A second problem is that this function calls qcow2_free_any_clusters()
      on failure but passing a host cluster offset instead of an L2 entry.
      Luckily for normal uncompressed clusters a raw offset also works like
      a valid L2 entry so it works just the same, but we should be using
      qcow2_free_clusters() instead.
      
      This patch fixes both problems by using qcow2_handle_l2meta().
      
      Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
      Message-Id: <cd3a6b9abd43f9c0b60be413d760f0cacc67eb66.1599573989.git.berto@igalia.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      1a52b73d
    • Swapnil Ingle's avatar
      block/vhdx: Support vhdx image only with 512 bytes logical sector size · 83a6a900
      Swapnil Ingle authored
      
      block/vhdx uses qemu block layer where sector size is always 512 bytes.
      This may have issues  with 4K logical sector sized vhdx image.
      
      For e.g qemu-img convert on such images fails with following assert:
      
      $qemu-img convert -f vhdx -O raw 4KTest1.vhdx test.raw
      qemu-img: util/iov.c:388: qiov_slice: Assertion `offset + len <=
      qiov->size' failed.
      Aborted
      
      This patch adds an check to return ENOTSUP for vhdx images which
      have logical sector size other than 512 bytes.
      
      Signed-off-by: default avatarSwapnil Ingle <swapnil.ingle@nutanix.com>
      Message-Id: <1596794594-44531-1-git-send-email-swapnil.ingle@nutanix.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      83a6a900
    • Thomas Huth's avatar
      iotests: Skip test_stream_parallel in test 030 when doing "make check" · 33fe08fc
      Thomas Huth authored
      
      The test_stream_parallel test still occasionally fails in the CI.
      Thus let's disable it during "make check" for now so that it does
      not cause trouble during merge tests. We can enable it again once
      the problem has been resolved.
      
      Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
      Message-Id: <20200907113824.134788-1-thuth@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      33fe08fc
    • Yi Li's avatar
      qemu-img: Explicit number replaced by a constant · c075c42f
      Yi Li authored
      
      Signed-off-by: default avatarYi Li <yili@winhong.com>
      Message-Id: <20200819013607.32280-1-yili@winhong.com>
      Reviewed-by: default avatarAlberto Garcia <berto@igalia.com>
      Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      c075c42f
    • Alberto Garcia's avatar
      qcow2: Rewrite the documentation of qcow2_alloc_cluster_offset() · 2b60c5b9
      Alberto Garcia authored
      
      The current text corresponds to an earlier, simpler version of this
      function and it does not explain how it works now.
      
      Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
      Message-Id: <bb5bd06f07c5a05b0818611de0d06ec5b66c8df3.1599150873.git.berto@igalia.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      2b60c5b9
    • Alberto Garcia's avatar
      qcow2: Don't check nb_clusters when removing l2meta from the list · f7bd5bba
      Alberto Garcia authored
      
      In the past, when a new cluster was allocated the l2meta structure was
      a variable in the stack so it was necessary to have a way to tell
      whether it had been initialized and contained valid data or not. The
      nb_clusters field was used for this purpose. Since commit f50f88b9
      this is no longer the case, l2meta (nowadays a pointer to a list) is
      only allocated when needed and nb_clusters is guaranteed to be > 0 so
      this check is unnecessary.
      
      Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
      Message-Id: <ab0b67c29c7ba26e598db35f12aa5ab5982539c1.1599150873.git.berto@igalia.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      f7bd5bba
    • Alberto Garcia's avatar
      qcow2: Fix removal of list members from BDRVQcow2State.cluster_allocs · 184581fa
      Alberto Garcia authored
      
      When a write request needs to allocate new clusters (or change the L2
      bitmap of existing ones) a QCowL2Meta structure is created so the L2
      metadata can be later updated and any copy-on-write can be performed
      if necessary.
      
      A write request can span a region consisting of an arbitrary
      combination of previously unallocated and allocated clusters, and if
      the unallocated ones can be put contiguous to the existing ones then
      QEMU will do so in order to minimize the number of write operations.
      
      In practice this means that a write request has not just one but a
      number of QCowL2Meta structures. All of them are added to the
      cluster_allocs list that is stored in BDRVQcow2State and is used to
      detect overlapping requests. After the write request finishes all its
      associated QCowL2Meta are removed from that list. calculate_l2_meta()
      takes care of creating and putting those structures in the list, and
      qcow2_handle_l2meta() takes care of removing them.
      
      The problem is that the error path in handle_alloc() also tries to
      remove an item in that list, a remnant from the time when this was
      handled there (that code would not even be correct anymore because
      it only removes one struct and not all the ones from the same write
      request).
      
      This can trigger a double removal of the same item from the list,
      causing a crash. This is not easy to reproduce in practice because
      it requires that do_alloc_cluster_offset() fails after a successful
      previous allocation during the same write request, but it can be
      reproduced with the included test case.
      
      Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
      Message-Id: <3440a1c4d53c4fe48312b478c96accb338cbef7c.1599150873.git.berto@igalia.com>
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      184581fa
Loading