Skip to content
Snippets Groups Projects
  1. Dec 11, 2020
    • Li Feng's avatar
      file-posix: check the use_lock before setting the file lock · eb43ea16
      Li Feng authored
      
      The scenario is that when accessing a volume on an NFS filesystem
      without supporting the file lock,  Qemu will complain "Failed to lock
      byte 100", even when setting the file.locking = off.
      
      We should do file lock related operations only when the file.locking is
      enabled, otherwise, the syscall of 'fcntl' will return non-zero.
      
      Signed-off-by: default avatarLi Feng <fengli@smartx.com>
      Message-Id: <1607341446-85506-1-git-send-email-fengli@smartx.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      eb43ea16
    • Hanna Reitz's avatar
      iotests/308: Add test for FUSE exports · e6c79647
      Hanna Reitz authored
      
      We have good coverage of the normal I/O paths now, but what remains is a
      test that tests some more special cases: Exporting an image on itself
      (thus turning a formatted image into a raw one), some error cases, and
      non-writable and non-growable exports.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Message-Id: <20201027190600.192171-21-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      e6c79647
    • Hanna Reitz's avatar
      iotests: Enable fuse for many tests · 57284d2a
      Hanna Reitz authored
      
      Many tests (that do not support generic protocols) can run just fine
      with FUSE-exported images, so allow them to.  Note that this is no
      attempt at being definitely complete.  There are some tests that might
      be modified to run on FUSE, but this patch still skips them.  This patch
      only tries to pick the rather low-hanging fruits.
      
      Note that 221 and 250 only pass when .lseek is correctly implemented,
      which is only possible with a libfuse that is 3.8 or newer.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Message-Id: <20201027190600.192171-20-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      57284d2a
    • Hanna Reitz's avatar
      iotests: Allow testing FUSE exports · f96ac06b
      Hanna Reitz authored
      
      This pretends FUSE exports are a kind of protocol.  As such, they are
      always tested under the format node.  This is probably the best way to
      test them, actually, because this will generate more I/O load and more
      varied patterns.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Message-Id: <20201027190600.192171-19-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      f96ac06b
    • Hanna Reitz's avatar
      iotests: Give access to the qemu-storage-daemon · cc575c3e
      Hanna Reitz authored
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Message-Id: <20201027190600.192171-18-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      cc575c3e
    • Hanna Reitz's avatar
      storage-daemon: Call bdrv_close_all() on exit · b55a3c88
      Hanna Reitz authored
      
      Otherwise, exports and block devices are not properly shut down and
      closed, unless the users explicitly issues blockdev-del and
      block-export-del commands for each of them.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Message-Id: <20201027190600.192171-17-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      b55a3c88
    • Hanna Reitz's avatar
      iotests/287: Clean up subshell test image · 7eadb1e5
      Hanna Reitz authored
      
      287 creates an image in a subshell (thanks to the pipe) to see whether
      that is possible with compression_type=zstd.  If _make_test_img were to
      modify any global state, this global state would then be lost before we
      could cleanup the image.
      
      When using FUSE as the test protocol, this global state is important, so
      clean up the image before the state is lost.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Message-Id: <20201027190600.192171-16-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      7eadb1e5
    • Hanna Reitz's avatar
      iotests: Let _make_test_img guess $TEST_IMG_FILE · d2d5310c
      Hanna Reitz authored
      
      When most iotests want to create a test image that is named differently
      from the default $TEST_IMG, they do something like this:
      
          TEST_IMG="$TEST_IMG.base" _make_test_img $options
      
      This works fine with the "file" protocol, but not so much for anything
      else: _make_test_img tries to create an image under $TEST_IMG_FILE
      first, and only under $TEST_IMG if the former is not set; and on
      everything but "file", $TEST_IMG_FILE is set.
      
      There are two ways we can fix this: First, we could make all tests
      adjust not only TEST_IMG, but also TEST_IMG_FILE if that is present
      (e.g. with something like _set_test_img_suffix $suffix that would affect
      not only TEST_IMG but also TEST_IMG_FILE, if necessary).  This is a
      pretty clean solution, and this is maybe what we should have done from
      the start.
      
      But it would also require changes to most existing bash tests.  So the
      alternative is this: Let _make_test_img see whether $TEST_IMG_FILE still
      points to the original value.  If so, it is possible that the caller has
      adjusted $TEST_IMG but not $TEST_IMG_FILE.  In such a case, we can (for
      most protocols) derive the corresponding $TEST_IMG_FILE value from
      $TEST_IMG value and thus work around what technically is the caller
      misbehaving.
      
      This second solution is less clean, but it is robust against people
      keeping their old habit of adjusting TEST_IMG only, and requires much
      less changes.  So this patch implements it.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Message-Id: <20201027190600.192171-15-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      d2d5310c
    • Hanna Reitz's avatar
      iotests: Restrict some Python tests to file · eda7a9c5
      Hanna Reitz authored
      
      Most Python tests are restricted to the file protocol (without
      explicitly saying so), but these are the ones that would break
      ./check -fuse -qcow2.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Message-Id: <20201027190600.192171-14-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      eda7a9c5
    • Hanna Reitz's avatar
      iotests/091: Use _cleanup_qemu instad of "wait" · b4a373bc
      Hanna Reitz authored
      
      If the test environment has some other child processes running (like a
      storage daemon that provides a FUSE export), then "wait" will never
      finish.  Use wait=yes _cleanup_qemu instead.
      
      (We need to discard the output so there is no change to the reference
      output.)
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Message-Id: <20201027190600.192171-13-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      b4a373bc
    • Hanna Reitz's avatar
      iotests: Derive image names from $TEST_IMG · 4c36f030
      Hanna Reitz authored
      
      Avoid creating images with custom filenames in $TEST_DIR, because
      non-file protocols may want to keep $TEST_IMG (and all other test
      images) in some other directory.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Message-Id: <20201027190600.192171-12-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      4c36f030
    • Hanna Reitz's avatar
      iotests/046: Avoid renaming images · 63c17df7
      Hanna Reitz authored
      
      This generally does not work on non-file protocols.  It is better to
      create the image with the final name from the start, and most tests do
      this already.  Let 046 follow suit.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Message-Id: <20201027190600.192171-11-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      63c17df7
    • Hanna Reitz's avatar
      iotests: Use convert -n in some cases · 620a628d
      Hanna Reitz authored
      
      qemu-img convert (without -n) can often be replaced by a combination of
      _make_test_img + qemu-img convert -n.  Doing so allows converting to
      protocols that do not allow direct file creation, such as FUSE exports.
      The only problem is that for formats other than qcow2 and qed (qcow1 at
      least), this may lead to high disk usage for some reason, so we cannot
      do it everywhere.
      
      But we can do it in 028 and 089, so let us do that so they can run on
      FUSE exports.  Also, in 028 this allows us to remove a 9-line comment
      that used to explain why we cannot safely filter drive-backup's image
      creation output.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Message-Id: <20201027190600.192171-10-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      620a628d
    • Hanna Reitz's avatar
      iotests: Do not pipe _make_test_img · d81fe252
      Hanna Reitz authored
      
      Executing _make_test_img as part of a pipe will undo all variable
      changes it has done.  As such, this could not work with FUSE (because
      we want to remember all of our exports and their qemu instances).
      
      Replace the pipe by a temporary file in 071 and 174 (the two tests that
      can run on FUSE).
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Message-Id: <20201027190600.192171-9-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      d81fe252
    • Hanna Reitz's avatar
      iotests: Do not needlessly filter _make_test_img · f96e59da
      Hanna Reitz authored
      
      In most cases, _make_test_img does not need a _filter_imgfmt on top.  It
      does that by itself.
      
      (The exception is when IMGFMT has been overwritten but TEST_IMG has not.
      In such cases, we do need a _filter_imgfmt on top to filter the test's
      original IMGFMT from TEST_IMG.)
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Reviewed-by: default avatarKevin Wolf <kwolf@redhat.com>
      Message-Id: <20201027190600.192171-8-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      f96e59da
    • Hanna Reitz's avatar
      fuse: Implement hole detection through lseek · df4ea709
      Hanna Reitz authored
      
      This is a relatively new feature in libfuse (available since 3.8.0,
      which was released in November 2019), so we have to add a dedicated
      check whether it is available before making use of it.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Message-Id: <20201027190600.192171-7-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      df4ea709
    • Hanna Reitz's avatar
      fuse: (Partially) implement fallocate() · 4ca37a96
      Hanna Reitz authored
      
      This allows allocating areas after the (old) EOF as part of a growing
      resize, writing zeroes, and discarding.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Message-Id: <20201027190600.192171-6-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      4ca37a96
    • Hanna Reitz's avatar
      fuse: Allow growable exports · 4fba06d5
      Hanna Reitz authored
      
      These will behave more like normal files in that writes beyond the EOF
      will automatically grow the export size.
      
      As an optimization, keep the RESIZE permission for growable exports so
      we do not have to take it for every post-EOF write.  (This permission is
      not released when the export is destroyed, because at that point the
      BlockBackend is destroyed altogether anyway.)
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Message-Id: <20201027190600.192171-5-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      4fba06d5
    • Hanna Reitz's avatar
      fuse: Implement standard FUSE operations · 41429e3d
      Hanna Reitz authored
      
      This makes the export actually useful instead of only producing errors
      whenever it is accessed.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Message-Id: <20201027190600.192171-4-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      41429e3d
    • Hanna Reitz's avatar
      fuse: Allow exporting BDSs via FUSE · 0c9b70d5
      Hanna Reitz authored
      
      block-export-add type=fuse allows mounting block graph nodes via FUSE on
      some existing regular file.  That file should then appears like a raw
      disk image, and accesses to it result in accesses to the exported BDS.
      
      Right now, we only implement the necessary block export functions to set
      it up and shut it down.  We do not implement any access functions, so
      accessing the mount point only results in errors.  This will be
      addressed by a followup patch.
      
      We keep a hash table of exported mount points, because we want to be
      able to detect when users try to use a mount point twice.  This is
      because we invoke stat() to check whether the given mount point is a
      regular file, but if that file is served by ourselves (because it is
      already used as a mount point), then this stat() would have to be served
      by ourselves, too, which is impossible to do while we (as the caller)
      are waiting for it to settle.  Therefore, keep track of mount point
      paths to at least catch the most obvious instances of that problem.
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Message-Id: <20201027190600.192171-3-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      0c9b70d5
    • Hanna Reitz's avatar
      meson: Detect libfuse · a484a719
      Hanna Reitz authored
      
      Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
      Message-Id: <20201027190600.192171-2-mreitz@redhat.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      a484a719
    • Gan Qixin's avatar
      block/iscsi: Use lock guard macros · c208b0ef
      Gan Qixin authored
      
      Replace manual lock()/unlock() calls with lock guard macros
      (QEMU_LOCK_GUARD/WITH_QEMU_LOCK_GUARD) in block/iscsi.
      
      Signed-off-by: default avatarGan Qixin <ganqixin@huawei.com>
      Message-Id: <20201203075055.127773-5-ganqixin@huawei.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      c208b0ef
    • Gan Qixin's avatar
      block/throttle-groups: Use lock guard macros · 3af613eb
      Gan Qixin authored
      
      Replace manual lock()/unlock() calls with lock guard macros
      (QEMU_LOCK_GUARD/WITH_QEMU_LOCK_GUARD) in block/throttle-groups.
      
      Signed-off-by: default avatarGan Qixin <ganqixin@huawei.com>
      Message-Id: <20201203075055.127773-4-ganqixin@huawei.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      3af613eb
    • Gan Qixin's avatar
      block/curl: Use lock guard macros · f5056b70
      Gan Qixin authored
      
      Replace manual lock()/unlock() calls with lock guard macros
      (QEMU_LOCK_GUARD/WITH_QEMU_LOCK_GUARD) in block/curl.
      
      Signed-off-by: default avatarGan Qixin <ganqixin@huawei.com>
      Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <20201203075055.127773-3-ganqixin@huawei.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      f5056b70
    • Gan Qixin's avatar
      block/accounting: Use lock guard macros · c37c9736
      Gan Qixin authored
      
      Replace manual lock()/unlock() calls with lock guard macros
      (QEMU_LOCK_GUARD/WITH_QEMU_LOCK_GUARD) in block/accounting.
      
      Signed-off-by: default avatarGan Qixin <ganqixin@huawei.com>
      Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <20201203075055.127773-2-ganqixin@huawei.com>
      Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
      c37c9736
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/bonzini-gitlab/tags/for-upstream' into staging · b785d25e
      Peter Maydell authored
      
      * Fix for NULL segments (Bin Meng)
      * Support for 32768 CPUs on x86 without IOMMU (David)
      * PDEP/PEXT fix and testcase (myself)
      * Remove bios_name and ram_size globals (myself)
      * qemu_init rationalization (myself)
      * Update kernel-doc (myself + upstream patches)
      * Propagate MemTxResult across DMA and PCI functions (Philippe)
      * Remove master/slave when applicable (Philippe)
      * WHPX support for in-kernel irqchip (Sunil)
      
      # gpg: Signature made Thu 10 Dec 2020 17:21:50 GMT
      # gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
      # gpg:                issuer "pbonzini@redhat.com"
      # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
      # gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [full]
      # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
      #      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83
      
      * remotes/bonzini-gitlab/tags/for-upstream: (113 commits)
        scripts: kernel-doc: remove unnecessary change wrt Linux
        Revert "docs: temporarily disable the kernel-doc extension"
        scripts: kernel-doc: use :c:union when needed
        scripts: kernel-doc: split typedef complex regex
        scripts: kernel-doc: fix typedef parsing
        Revert "kernel-doc: Handle function typedefs that return pointers"
        Revert "kernel-doc: Handle function typedefs without asterisks"
        scripts: kernel-doc: try to use c:function if possible
        scripts: kernel-doc: fix line number handling
        scripts: kernel-doc: allow passing desired Sphinx C domain dialect
        scripts: kernel-doc: don't mangle with parameter list
        scripts: kernel-doc: fix typedef identification
        scripts: kernel-doc: reimplement -nofunction argument
        scripts: kernel-doc: fix troubles with line counts
        scripts: kernel-doc: use a less pedantic markup for funcs on Sphinx 3.x
        scripts: kernel-doc: make it more compatible with Sphinx 3.x
        Revert "kernel-doc: Use c:struct for Sphinx 3.0 and later"
        Revert "scripts/kerneldoc: For Sphinx 3 use c:macro for macros with arguments"
        scripts: kernel-doc: add support for typedef enum
        kernel-doc: add support for ____cacheline_aligned attribute
        ...
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      b785d25e
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into staging · 33744604
      Peter Maydell authored
      
      Machine queue, 2020-12-10
      
      Some patches that were queued after 5.2 soft freeze.
      
      # gpg: Signature made Thu 10 Dec 2020 22:41:29 GMT
      # gpg:                using RSA key 5A322FD5ABC4D3DBACCFD1AA2807936F984DC5A6
      # gpg:                issuer "ehabkost@redhat.com"
      # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>" [full]
      # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6
      
      * remotes/ehabkost/tags/machine-next-pull-request:
        i386/cpu: Make the Intel PT LIP feature configurable
        sev: add sev-inject-launch-secret
        qom: code hardening - have bound checking while looping with integer value
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      33744604
  2. Dec 10, 2020
Loading