qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PULL 0/4] Block layer patches
@ 2019-09-20 16:20 Kevin Wolf
  2019-09-23  9:49 ` Peter Maydell
  0 siblings, 1 reply; 18+ messages in thread
From: Kevin Wolf @ 2019-09-20 16:20 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, peter.maydell, qemu-devel

The following changes since commit 521db80318d6c749a6f6c5a65a68397af9e3ef16:

  Merge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2019-09-16' into staging (2019-09-16 15:25:55 +0100)

are available in the Git repository at:

  git://repo.or.cz/qemu/kevin.git tags/for-upstream

for you to fetch changes up to d2c8c09fca9210d0f2399c8d570086a4a66bd22e:

  iotests: Remove Python 2 compatibility code (2019-09-20 17:58:51 +0200)

----------------------------------------------------------------
Block layer patches:

- Fix internal snapshots with typical -blockdev setups
- iotests: Require Python 3.6 or later

----------------------------------------------------------------
Kevin Wolf (4):
      block/snapshot: Restrict set of snapshot nodes
      iotests: Test internal snapshots with -blockdev
      iotests: Require Python 3.6 or later
      iotests: Remove Python 2 compatibility code

 block/snapshot.c                         |  26 +++--
 tests/qemu-iotests/044                   |   3 -
 tests/qemu-iotests/163                   |   3 -
 tests/qemu-iotests/267                   | 168 ++++++++++++++++++++++++++++
 tests/qemu-iotests/267.out               | 182 +++++++++++++++++++++++++++++++
 tests/qemu-iotests/check                 |  13 ++-
 tests/qemu-iotests/common.filter         |   5 +-
 tests/qemu-iotests/group                 |   1 +
 tests/qemu-iotests/iotests.py            |  13 +--
 tests/qemu-iotests/nbd-fault-injector.py |   7 +-
 10 files changed, 389 insertions(+), 32 deletions(-)
 create mode 100755 tests/qemu-iotests/267
 create mode 100644 tests/qemu-iotests/267.out


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PULL 0/4] Block layer patches
  2019-09-20 16:20 Kevin Wolf
@ 2019-09-23  9:49 ` Peter Maydell
  0 siblings, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2019-09-23  9:49 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: QEMU Developers, Qemu-block

On Fri, 20 Sep 2019 at 17:21, Kevin Wolf <kwolf@redhat.com> wrote:
>
> The following changes since commit 521db80318d6c749a6f6c5a65a68397af9e3ef16:
>
>   Merge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2019-09-16' into staging (2019-09-16 15:25:55 +0100)
>
> are available in the Git repository at:
>
>   git://repo.or.cz/qemu/kevin.git tags/for-upstream
>
> for you to fetch changes up to d2c8c09fca9210d0f2399c8d570086a4a66bd22e:
>
>   iotests: Remove Python 2 compatibility code (2019-09-20 17:58:51 +0200)
>
> ----------------------------------------------------------------
> Block layer patches:
>
> - Fix internal snapshots with typical -blockdev setups
> - iotests: Require Python 3.6 or later
>
> ----------------------------------------------------------------
> Kevin Wolf (4):
>       block/snapshot: Restrict set of snapshot nodes
>       iotests: Test internal snapshots with -blockdev
>       iotests: Require Python 3.6 or later
>       iotests: Remove Python 2 compatibility code

Hi. This fails 'make check' on all the non-x86 Linux hosts:
iotests 267 fails on aarch32, ppc64, s390x, aarch64.
Sample output from the aarch32 run; others are similar
but the listed snapshot size differs.

  TEST    iotest-qcow2: 267 [fail]
QEMU          --
"/home/peter.maydell/qemu/build/all-a32/tests/qemu-iotests/../../aarch64-softmmu/qemu-system-aarch64"
-nodefaults -display none
-machine virt,accel=qtest
QEMU_IMG      --
"/home/peter.maydell/qemu/build/all-a32/tests/qemu-iotests/../../qemu-img"
QEMU_IO       --
"/home/peter.maydell/qemu/build/all-a32/tests/qemu-iotests/../../qemu-io"
 --cache writeback -f qcow2
QEMU_NBD      --
"/home/peter.maydell/qemu/build/all-a32/tests/qemu-iotests/../../qemu-nbd"
IMGFMT        -- qcow2 (compat=1.1)
IMGPROTO      -- file
PLATFORM      -- Linux/aarch64 mustang-maydell 4.15.0-51-generic
TEST_DIR      --
/home/peter.maydell/qemu/build/all-a32/tests/qemu-iotests/scratch
SOCKET_SCM_HELPER --
/home/peter.maydell/qemu/build/all-a32/tests/qemu-iotests/socket_scm_helper

--- /home/peter.maydell/qemu/tests/qemu-iotests/267.out 2019-09-20
17:54:40.127012142 +0000
+++ /home/peter.maydell/qemu/build/all-a32/tests/qemu-iotests/267.out.bad
      2019-09-20 18:02:11.756586745 +0000
@@ -34,7 +34,7 @@
 (qemu) info snapshots
 List of snapshots present on all disks:
 ID        TAG                 VM SIZE                DATE       VM CLOCK
---        snap0               591 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
+--        snap0               640 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
 (qemu) loadvm snap0
 (qemu) quit

@@ -45,7 +45,7 @@
 (qemu) info snapshots
 List of snapshots present on all disks:
 ID        TAG                 VM SIZE                DATE       VM CLOCK
---        snap0               636 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
+--        snap0               684 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
 (qemu) loadvm snap0
 (qemu) quit

@@ -70,7 +70,7 @@
 (qemu) info snapshots
 List of snapshots present on all disks:
 ID        TAG                 VM SIZE                DATE       VM CLOCK
---        snap0               636 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
+--        snap0               684 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
 (qemu) loadvm snap0
 (qemu) quit

@@ -95,7 +95,7 @@
 (qemu) info snapshots
 List of snapshots present on all disks:
 ID        TAG                 VM SIZE                DATE       VM CLOCK
---        snap0               591 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
+--        snap0               640 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
 (qemu) loadvm snap0
 (qemu) quit

@@ -106,7 +106,7 @@
 (qemu) info snapshots
 List of snapshots present on all disks:
 ID        TAG                 VM SIZE                DATE       VM CLOCK
---        snap0               591 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
+--        snap0               640 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
 (qemu) loadvm snap0
 (qemu) quit

@@ -120,7 +120,7 @@
 (qemu) info snapshots
 List of snapshots present on all disks:
 ID        TAG                 VM SIZE                DATE       VM CLOCK
---        snap0               591 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
+--        snap0               640 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
 (qemu) loadvm snap0
 (qemu) quit

@@ -135,7 +135,7 @@
 (qemu) info snapshots
 List of snapshots present on all disks:
 ID        TAG                 VM SIZE                DATE       VM CLOCK
---        snap0               591 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
+--        snap0               640 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
 (qemu) loadvm snap0
 (qemu) quit

@@ -146,14 +146,14 @@
 (qemu) info snapshots
 List of snapshots present on all disks:
 ID        TAG                 VM SIZE                DATE       VM CLOCK
---        snap0               591 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
+--        snap0               640 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
 (qemu) loadvm snap0
 (qemu) quit

 Internal snapshots on overlay:
 Snapshot list:
 ID        TAG                 VM SIZE                DATE       VM CLOCK
-1         snap0               591 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
+1         snap0               640 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
 Internal snapshots on backing file:

 === -blockdev with NBD server on the backing file ===
@@ -167,7 +167,7 @@
 (qemu) info snapshots
 List of snapshots present on all disks:
 ID        TAG                 VM SIZE                DATE       VM CLOCK
---        snap0               591 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
+--        snap0               640 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
 (qemu) loadvm snap0
 (qemu) quit

@@ -178,5 +178,5 @@
 Internal snapshots on backing file:
 Snapshot list:
 ID        TAG                 VM SIZE                DATE       VM CLOCK
-1         snap0               591 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
+1         snap0               640 KiB yyyy-mm-dd hh:mm:ss   00:00:00.000
 *** done
Not run: 172 186 192 220
Failures: 267
Failed 1 of 104 iotests


thanks
-- PMM


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PULL 0/4] Block layer patches
@ 2023-03-28 12:35 Kevin Wolf
  2023-03-28 19:42 ` Peter Maydell
  0 siblings, 1 reply; 18+ messages in thread
From: Kevin Wolf @ 2023-03-28 12:35 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, peter.maydell, qemu-devel

The following changes since commit e3debd5e7d0ce031356024878a0a18b9d109354a:

  Merge tag 'pull-request-2023-03-24' of https://gitlab.com/thuth/qemu into staging (2023-03-24 16:08:46 +0000)

are available in the Git repository at:

  https://repo.or.cz/qemu/kevin.git tags/for-upstream

for you to fetch changes up to d8fbf9aa85aed64450907580a1d70583f097e9df:

  block/export: Fix graph locking in blk_get_geometry() call (2023-03-27 15:16:05 +0200)

----------------------------------------------------------------
Block layer patches

- aio-posix: Fix race during epoll upgrade
- vhost-user-blk/VDUSE export: Fix a potential deadlock and an assertion
  failure when the export runs in an iothread
- NBD server: Push pending frames after sending reply to fix performance
  especially when used with TLS

----------------------------------------------------------------
Florian Westphal (1):
      nbd/server: push pending frames after sending reply

Kevin Wolf (1):
      block/export: Fix graph locking in blk_get_geometry() call

Stefan Hajnoczi (2):
      block/export: only acquire AioContext once for vhost_user_server_stop()
      aio-posix: fix race between epoll upgrade and aio_set_fd_handler()

 include/block/block-io.h          |  4 +++-
 include/sysemu/block-backend-io.h |  5 ++++-
 block.c                           |  5 +++--
 block/block-backend.c             |  7 +++++--
 block/export/virtio-blk-handler.c |  7 ++++---
 nbd/server.c                      |  3 +++
 util/fdmon-epoll.c                | 25 ++++++++++++++++++-------
 util/vhost-user-server.c          |  5 +----
 8 files changed, 41 insertions(+), 20 deletions(-)



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PULL 0/4] Block layer patches
  2023-03-28 12:35 Kevin Wolf
@ 2023-03-28 19:42 ` Peter Maydell
  0 siblings, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2023-03-28 19:42 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: qemu-block, qemu-devel

On Tue, 28 Mar 2023 at 13:35, Kevin Wolf <kwolf@redhat.com> wrote:
>
> The following changes since commit e3debd5e7d0ce031356024878a0a18b9d109354a:
>
>   Merge tag 'pull-request-2023-03-24' of https://gitlab.com/thuth/qemu into staging (2023-03-24 16:08:46 +0000)
>
> are available in the Git repository at:
>
>   https://repo.or.cz/qemu/kevin.git tags/for-upstream
>
> for you to fetch changes up to d8fbf9aa85aed64450907580a1d70583f097e9df:
>
>   block/export: Fix graph locking in blk_get_geometry() call (2023-03-27 15:16:05 +0200)
>
> ----------------------------------------------------------------
> Block layer patches
>
> - aio-posix: Fix race during epoll upgrade
> - vhost-user-blk/VDUSE export: Fix a potential deadlock and an assertion
>   failure when the export runs in an iothread
> - NBD server: Push pending frames after sending reply to fix performance
>   especially when used with TLS


Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/8.0
for any user-visible changes.

-- PMM


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PULL 0/4] Block layer patches
@ 2023-11-28 14:09 Kevin Wolf
  0 siblings, 0 replies; 18+ messages in thread
From: Kevin Wolf @ 2023-11-28 14:09 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, stefanha, qemu-devel

The following changes since commit e867b01cd6658a64c16052117dbb18093a2f9772:

  Merge tag 'qga-pull-2023-11-25' of https://github.com/kostyanf14/qemu into staging (2023-11-27 08:59:00 -0500)

are available in the Git repository at:

  https://repo.or.cz/qemu/kevin.git tags/for-upstream

for you to fetch changes up to 6e081324facf9aeece9c286774bab5af3b8d6099:

  ide/via: Fix BAR4 value in legacy mode (2023-11-28 14:56:32 +0100)

----------------------------------------------------------------
Block layer patches

- ide/via: Fix BAR4 value in legacy mode
- export/vhost-user-blk: Fix consecutive drains
- vmdk: Don't corrupt desc file in vmdk_write_cid
- iotests: fix default machine type detection

----------------------------------------------------------------
Andrey Drobyshev (1):
      iotests: fix default machine type detection

BALATON Zoltan (1):
      ide/via: Fix BAR4 value in legacy mode

Fam Zheng (1):
      vmdk: Don't corrupt desc file in vmdk_write_cid

Kevin Wolf (1):
      export/vhost-user-blk: Fix consecutive drains

 include/qemu/vhost-user-server.h     |  1 +
 block/export/vhost-user-blk-server.c |  9 +++++++--
 block/vmdk.c                         | 28 ++++++++++++++++++--------
 hw/ide/via.c                         | 17 ++++++++++------
 util/vhost-user-server.c             | 39 ++++++++++++++++++++++++++++--------
 tests/qemu-iotests/testenv.py        |  2 +-
 tests/qemu-iotests/059               |  2 ++
 tests/qemu-iotests/059.out           |  4 ++++
 8 files changed, 77 insertions(+), 25 deletions(-)



^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PULL 0/4] Block layer patches
@ 2025-04-08 13:00 Kevin Wolf
  2025-04-09  8:31 ` Stefan Hajnoczi
  0 siblings, 1 reply; 18+ messages in thread
From: Kevin Wolf @ 2025-04-08 13:00 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, qemu-devel

The following changes since commit dfaecc04c46d298e9ee81bd0ca96d8754f1c27ed:

  Merge tag 'pull-riscv-to-apply-20250407-1' of https://github.com/alistair23/qemu into staging (2025-04-07 09:18:33 -0400)

are available in the Git repository at:

  https://repo.or.cz/qemu/kevin.git tags/for-upstream

for you to fetch changes up to f8222bfba3409a3ce09c191941127a8cf2c7e623:

  test-bdrv-drain: Fix data races (2025-04-08 15:00:01 +0200)

----------------------------------------------------------------
Block layer patches

- scsi-disk: Apply error policy for host_status errors again
- qcow2: Fix qemu-img info crash with missing crypto header
- qemu-img bench: Fix division by zero for zero-sized images
- test-bdrv-drain: Fix data races

----------------------------------------------------------------
Denis Rastyogin (1):
      qemu-img: fix division by zero in bench_cb() for zero-sized images

Kevin Wolf (2):
      qcow2: Don't crash qemu-img info with missing crypto header
      scsi-disk: Apply error policy for host_status errors again

Vitalii Mordan (1):
      test-bdrv-drain: Fix data races

 include/qemu/job.h                            |  3 ++
 block/qcow2.c                                 |  4 +-
 hw/scsi/scsi-disk.c                           | 39 +++++++++-----
 job.c                                         |  6 +++
 qemu-img.c                                    |  6 ++-
 tests/unit/test-bdrv-drain.c                  | 32 +++++++-----
 tests/qemu-iotests/tests/qcow2-encryption     | 75 +++++++++++++++++++++++++++
 tests/qemu-iotests/tests/qcow2-encryption.out | 32 ++++++++++++
 8 files changed, 167 insertions(+), 30 deletions(-)
 create mode 100755 tests/qemu-iotests/tests/qcow2-encryption
 create mode 100644 tests/qemu-iotests/tests/qcow2-encryption.out



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PULL 0/4] Block layer patches
  2025-04-08 13:00 Kevin Wolf
@ 2025-04-09  8:31 ` Stefan Hajnoczi
  0 siblings, 0 replies; 18+ messages in thread
From: Stefan Hajnoczi @ 2025-04-09  8:31 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: qemu-block, kwolf, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 116 bytes --]

Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/10.0 for any user-visible changes.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PULL 0/4] Block layer patches
@ 2025-04-25 17:52 Kevin Wolf
  2025-04-25 17:52 ` [PULL 1/4] file-posix: probe discard alignment on Linux block devices Kevin Wolf
                   ` (4 more replies)
  0 siblings, 5 replies; 18+ messages in thread
From: Kevin Wolf @ 2025-04-25 17:52 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, qemu-devel

The following changes since commit 019fbfa4bcd2d3a835c241295e22ab2b5b56129b:

  Merge tag 'pull-misc-2025-04-24' of https://repo.or.cz/qemu/armbru into staging (2025-04-24 13:44:57 -0400)

are available in the Git repository at:

  https://repo.or.cz/qemu/kevin.git tags/for-upstream

for you to fetch changes up to 2b689db0bedd24eda8b491cb1fcfb015dfec5a31:

  qemu-img: improve queue depth validation in img_bench (2025-04-25 18:09:04 +0200)

----------------------------------------------------------------
Block layer patches

- Discard alignment fixes
- Remove unused callback .bdrv_aio_pdiscard()
- qemu-img bench: Input validation fix

----------------------------------------------------------------
Denis Rastyogin (1):
      qemu-img: improve queue depth validation in img_bench

Stefan Hajnoczi (2):
      file-posix: probe discard alignment on Linux block devices
      block/io: skip head/tail requests on EINVAL

Sunny Zhu (1):
      block: Remove unused callback function *bdrv_aio_pdiscard

 include/block/block_int-common.h |  4 ---
 block/file-posix.c               | 67 +++++++++++++++++++++++++++++++++++++++-
 block/io.c                       | 35 +++++++--------------
 qemu-img.c                       |  2 +-
 4 files changed, 79 insertions(+), 29 deletions(-)



^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PULL 1/4] file-posix: probe discard alignment on Linux block devices
  2025-04-25 17:52 [PULL 0/4] Block layer patches Kevin Wolf
@ 2025-04-25 17:52 ` Kevin Wolf
  2025-04-25 17:52 ` [PULL 2/4] block/io: skip head/tail requests on EINVAL Kevin Wolf
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 18+ messages in thread
From: Kevin Wolf @ 2025-04-25 17:52 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, qemu-devel

From: Stefan Hajnoczi <stefanha@redhat.com>

Populate the pdiscard_alignment block limit so the block layer is able
align discard requests correctly.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-ID: <20250417150528.76470-2-stefanha@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block/file-posix.c | 67 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 66 insertions(+), 1 deletion(-)

diff --git a/block/file-posix.c b/block/file-posix.c
index 56d1972d15..0d6e12f880 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -1276,10 +1276,10 @@ static int get_sysfs_zoned_model(struct stat *st, BlockZoneModel *zoned)
 }
 #endif /* defined(CONFIG_BLKZONED) */
 
+#ifdef CONFIG_LINUX
 /*
  * Get a sysfs attribute value as a long integer.
  */
-#ifdef CONFIG_LINUX
 static long get_sysfs_long_val(struct stat *st, const char *attribute)
 {
     g_autofree char *str = NULL;
@@ -1299,6 +1299,30 @@ static long get_sysfs_long_val(struct stat *st, const char *attribute)
     }
     return ret;
 }
+
+/*
+ * Get a sysfs attribute value as a uint32_t.
+ */
+static int get_sysfs_u32_val(struct stat *st, const char *attribute,
+                             uint32_t *u32)
+{
+    g_autofree char *str = NULL;
+    const char *end;
+    unsigned int val;
+    int ret;
+
+    ret = get_sysfs_str_val(st, attribute, &str);
+    if (ret < 0) {
+        return ret;
+    }
+
+    /* The file is ended with '\n', pass 'end' to accept that. */
+    ret = qemu_strtoui(str, &end, 10, &val);
+    if (ret == 0 && end && *end == '\0') {
+        *u32 = val;
+    }
+    return ret;
+}
 #endif
 
 static int hdev_get_max_segments(int fd, struct stat *st)
@@ -1318,6 +1342,23 @@ static int hdev_get_max_segments(int fd, struct stat *st)
 #endif
 }
 
+/*
+ * Fills in *dalign with the discard alignment and returns 0 on success,
+ * -errno otherwise.
+ */
+static int hdev_get_pdiscard_alignment(struct stat *st, uint32_t *dalign)
+{
+#ifdef CONFIG_LINUX
+    /*
+     * Note that Linux "discard_granularity" is QEMU "discard_alignment". Linux
+     * "discard_alignment" is something else.
+     */
+    return get_sysfs_u32_val(st, "discard_granularity", dalign);
+#else
+    return -ENOTSUP;
+#endif
+}
+
 #if defined(CONFIG_BLKZONED)
 /*
  * If the reset_all flag is true, then the wps of zone whose state is
@@ -1527,6 +1568,30 @@ static void raw_refresh_limits(BlockDriverState *bs, Error **errp)
         }
     }
 
+    if (S_ISBLK(st.st_mode)) {
+        uint32_t dalign = 0;
+        int ret;
+
+        ret = hdev_get_pdiscard_alignment(&st, &dalign);
+        if (ret == 0) {
+            uint32_t ralign = bs->bl.request_alignment;
+
+            /* Probably never happens, but handle it just in case */
+            if (dalign < ralign && (ralign % dalign == 0)) {
+                dalign = ralign;
+            }
+
+            /* The block layer requires a multiple of request_alignment */
+            if (dalign % ralign != 0) {
+                error_setg(errp, "Invalid pdiscard_alignment limit %u is not a "
+                        "multiple of request_alignment %u", dalign, ralign);
+                return;
+            }
+
+            bs->bl.pdiscard_alignment = dalign;
+        }
+    }
+
     raw_refresh_zoned_limits(bs, &st, errp);
 }
 
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PULL 2/4] block/io: skip head/tail requests on EINVAL
  2025-04-25 17:52 [PULL 0/4] Block layer patches Kevin Wolf
  2025-04-25 17:52 ` [PULL 1/4] file-posix: probe discard alignment on Linux block devices Kevin Wolf
@ 2025-04-25 17:52 ` Kevin Wolf
  2025-04-25 17:52 ` [PULL 3/4] block: Remove unused callback function *bdrv_aio_pdiscard Kevin Wolf
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 18+ messages in thread
From: Kevin Wolf @ 2025-04-25 17:52 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, qemu-devel

From: Stefan Hajnoczi <stefanha@redhat.com>

When guests send misaligned discard requests, the block layer breaks
them up into a misaligned head, an aligned main body, and a misaligned
tail.

The file-posix block driver on Linux returns -EINVAL on misaligned
discard requests. This causes bdrv_co_pdiscard() to fail and guests
configured with werror=stop will pause.

Add a special case for misaligned head/tail requests. Simply continue
when EINVAL is encountered so that the aligned main body of the request
can be completed and the guest is not paused. This is the best we can do
when guest discard limits do not match the host discard limits.

Fixes: https://issues.redhat.com/browse/RHEL-86032
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Hanna Czenczek <hreitz@redhat.com>
Message-ID: <20250417150528.76470-3-stefanha@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block/io.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/block/io.c b/block/io.c
index 1ba8d1aeea..ccec11386b 100644
--- a/block/io.c
+++ b/block/io.c
@@ -3109,11 +3109,12 @@ int coroutine_fn bdrv_co_pdiscard(BdrvChild *child, int64_t offset,
     /* Invalidate the cached block-status data range if this discard overlaps */
     bdrv_bsc_invalidate_range(bs, offset, bytes);
 
-    /* Discard is advisory, but some devices track and coalesce
+    /*
+     * Discard is advisory, but some devices track and coalesce
      * unaligned requests, so we must pass everything down rather than
-     * round here.  Still, most devices will just silently ignore
-     * unaligned requests (by returning -ENOTSUP), so we must fragment
-     * the request accordingly.  */
+     * round here.  Still, most devices reject unaligned requests with
+     * -EINVAL or -ENOTSUP, so we must fragment the request accordingly.
+     */
     align = MAX(bs->bl.pdiscard_alignment, bs->bl.request_alignment);
     assert(align % bs->bl.request_alignment == 0);
     head = offset % align;
@@ -3180,7 +3181,11 @@ int coroutine_fn bdrv_co_pdiscard(BdrvChild *child, int64_t offset,
             }
         }
         if (ret && ret != -ENOTSUP) {
-            goto out;
+            if (ret == -EINVAL && (offset % align != 0 || num % align != 0)) {
+                /* Silently skip rejected unaligned head/tail requests */
+            } else {
+                goto out; /* bail out */
+            }
         }
 
         offset += num;
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PULL 3/4] block: Remove unused callback function *bdrv_aio_pdiscard
  2025-04-25 17:52 [PULL 0/4] Block layer patches Kevin Wolf
  2025-04-25 17:52 ` [PULL 1/4] file-posix: probe discard alignment on Linux block devices Kevin Wolf
  2025-04-25 17:52 ` [PULL 2/4] block/io: skip head/tail requests on EINVAL Kevin Wolf
@ 2025-04-25 17:52 ` Kevin Wolf
  2025-04-25 17:52 ` [PULL 4/4] qemu-img: improve queue depth validation in img_bench Kevin Wolf
  2025-04-28 17:56 ` [PULL 0/4] Block layer patches Stefan Hajnoczi
  4 siblings, 0 replies; 18+ messages in thread
From: Kevin Wolf @ 2025-04-25 17:52 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, qemu-devel

From: Sunny Zhu <sunnyzhyy@qq.com>

The bytes type in *bdrv_aio_pdiscard should be int64_t rather than int.

There are no drivers implementing the *bdrv_aio_pdiscard() callback,
it appears to be an unused function. Therefore, we'll simply remove it
instead of fixing it.

Additionally, coroutine-based callbacks are preferred. If someone needs
to implement bdrv_aio_pdiscard, a coroutine-based version would be
straightforward to implement.

Signed-off-by: Sunny Zhu <sunnyzhyy@qq.com>
Message-ID: <tencent_7140D2E54157D98CF3D9E64B1A007A1A7906@qq.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 include/block/block_int-common.h |  4 ----
 block/io.c                       | 22 +++-------------------
 2 files changed, 3 insertions(+), 23 deletions(-)

diff --git a/include/block/block_int-common.h b/include/block/block_int-common.h
index ebb4e56a50..0d8187f656 100644
--- a/include/block/block_int-common.h
+++ b/include/block/block_int-common.h
@@ -506,10 +506,6 @@ struct BlockDriver {
     BlockAIOCB * GRAPH_RDLOCK_PTR (*bdrv_aio_flush)(
         BlockDriverState *bs, BlockCompletionFunc *cb, void *opaque);
 
-    BlockAIOCB * GRAPH_RDLOCK_PTR (*bdrv_aio_pdiscard)(
-        BlockDriverState *bs, int64_t offset, int bytes,
-        BlockCompletionFunc *cb, void *opaque);
-
     int coroutine_fn GRAPH_RDLOCK_PTR (*bdrv_co_readv)(BlockDriverState *bs,
         int64_t sector_num, int nb_sectors, QEMUIOVector *qiov);
 
diff --git a/block/io.c b/block/io.c
index ccec11386b..6d98b0abb9 100644
--- a/block/io.c
+++ b/block/io.c
@@ -3102,7 +3102,7 @@ int coroutine_fn bdrv_co_pdiscard(BdrvChild *child, int64_t offset,
         return 0;
     }
 
-    if (!bs->drv->bdrv_co_pdiscard && !bs->drv->bdrv_aio_pdiscard) {
+    if (!bs->drv->bdrv_co_pdiscard) {
         return 0;
     }
 
@@ -3162,24 +3162,8 @@ int coroutine_fn bdrv_co_pdiscard(BdrvChild *child, int64_t offset,
             ret = -ENOMEDIUM;
             goto out;
         }
-        if (bs->drv->bdrv_co_pdiscard) {
-            ret = bs->drv->bdrv_co_pdiscard(bs, offset, num);
-        } else {
-            BlockAIOCB *acb;
-            CoroutineIOCompletion co = {
-                .coroutine = qemu_coroutine_self(),
-            };
-
-            acb = bs->drv->bdrv_aio_pdiscard(bs, offset, num,
-                                             bdrv_co_io_em_complete, &co);
-            if (acb == NULL) {
-                ret = -EIO;
-                goto out;
-            } else {
-                qemu_coroutine_yield();
-                ret = co.ret;
-            }
-        }
+
+        ret = bs->drv->bdrv_co_pdiscard(bs, offset, num);
         if (ret && ret != -ENOTSUP) {
             if (ret == -EINVAL && (offset % align != 0 || num % align != 0)) {
                 /* Silently skip rejected unaligned head/tail requests */
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PULL 4/4] qemu-img: improve queue depth validation in img_bench
  2025-04-25 17:52 [PULL 0/4] Block layer patches Kevin Wolf
                   ` (2 preceding siblings ...)
  2025-04-25 17:52 ` [PULL 3/4] block: Remove unused callback function *bdrv_aio_pdiscard Kevin Wolf
@ 2025-04-25 17:52 ` Kevin Wolf
  2025-04-28 13:54   ` Michael Tokarev
  2025-04-28 17:56 ` [PULL 0/4] Block layer patches Stefan Hajnoczi
  4 siblings, 1 reply; 18+ messages in thread
From: Kevin Wolf @ 2025-04-25 17:52 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, qemu-devel

From: Denis Rastyogin <gerben@altlinux.org>

This error was discovered by fuzzing qemu-img.

Currently, running `qemu-img bench -d 0` in img_bench is allowed,
which is a pointless operation and causes qemu-img to hang.

Signed-off-by: Denis Rastyogin <gerben@altlinux.org>
Message-ID: <20250327162423.25154-5-gerben@altlinux.org>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 qemu-img.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/qemu-img.c b/qemu-img.c
index 2044c22a4c..76ac5d3028 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -4571,7 +4571,7 @@ static int img_bench(int argc, char **argv)
         {
             unsigned long res;
 
-            if (qemu_strtoul(optarg, NULL, 0, &res) < 0 || res > INT_MAX) {
+            if (qemu_strtoul(optarg, NULL, 0, &res) <= 0 || res > INT_MAX) {
                 error_report("Invalid queue depth specified");
                 return 1;
             }
-- 
2.49.0



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PULL 4/4] qemu-img: improve queue depth validation in img_bench
  2025-04-25 17:52 ` [PULL 4/4] qemu-img: improve queue depth validation in img_bench Kevin Wolf
@ 2025-04-28 13:54   ` Michael Tokarev
  2025-04-28 13:58     ` Michael Tokarev
  0 siblings, 1 reply; 18+ messages in thread
From: Michael Tokarev @ 2025-04-28 13:54 UTC (permalink / raw)
  To: Kevin Wolf, qemu-block; +Cc: qemu-devel

25.04.2025 20:52, Kevin Wolf wrote:
> From: Denis Rastyogin <gerben@altlinux.org>
> 
> This error was discovered by fuzzing qemu-img.
> 
> Currently, running `qemu-img bench -d 0` in img_bench is allowed,
> which is a pointless operation and causes qemu-img to hang.
> 
> Signed-off-by: Denis Rastyogin <gerben@altlinux.org>
> Message-ID: <20250327162423.25154-5-gerben@altlinux.org>
> Reviewed-by: Kevin Wolf <kwolf@redhat.com>
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>   qemu-img.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/qemu-img.c b/qemu-img.c
> index 2044c22a4c..76ac5d3028 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -4571,7 +4571,7 @@ static int img_bench(int argc, char **argv)
>           {
>               unsigned long res;
>   
> -            if (qemu_strtoul(optarg, NULL, 0, &res) < 0 || res > INT_MAX) {
> +            if (qemu_strtoul(optarg, NULL, 0, &res) <= 0 || res > INT_MAX) {
>                   error_report("Invalid queue depth specified");
>                   return 1;
>               }

FWIW, it's been covered by my qemu-img options patches for way over a year.

/mjt


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PULL 4/4] qemu-img: improve queue depth validation in img_bench
  2025-04-28 13:54   ` Michael Tokarev
@ 2025-04-28 13:58     ` Michael Tokarev
  2025-05-13 15:06       ` Kevin Wolf
  0 siblings, 1 reply; 18+ messages in thread
From: Michael Tokarev @ 2025-04-28 13:58 UTC (permalink / raw)
  To: Kevin Wolf, qemu-block; +Cc: qemu-devel

28.04.2025 16:54, Michael Tokarev пишет:
> 25.04.2025 20:52, Kevin Wolf wrote:
>> From: Denis Rastyogin <gerben@altlinux.org>
>>
>> This error was discovered by fuzzing qemu-img.
>>
>> Currently, running `qemu-img bench -d 0` in img_bench is allowed,
>> which is a pointless operation and causes qemu-img to hang.
>>
>> Signed-off-by: Denis Rastyogin <gerben@altlinux.org>
>> Message-ID: <20250327162423.25154-5-gerben@altlinux.org>
>> Reviewed-by: Kevin Wolf <kwolf@redhat.com>
>> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
>> ---
>>   qemu-img.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/qemu-img.c b/qemu-img.c
>> index 2044c22a4c..76ac5d3028 100644
>> --- a/qemu-img.c
>> +++ b/qemu-img.c
>> @@ -4571,7 +4571,7 @@ static int img_bench(int argc, char **argv)
>>           {
>>               unsigned long res;
>> -            if (qemu_strtoul(optarg, NULL, 0, &res) < 0 || res > INT_MAX) {
>> +            if (qemu_strtoul(optarg, NULL, 0, &res) <= 0 || res > INT_MAX) {
>>                   error_report("Invalid queue depth specified");
>>                   return 1;
>>               }
> 
> FWIW, it's been covered by my qemu-img options patches for way over a year.

In particular:

https://lore.kernel.org/qemu-devel/20240927061121.573271-28-mjt@tls.msk.ru/

I'm still waiting for some feedback from these patches - heard neither ACK
nor NACK for this rather large work.

/mjt


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PULL 0/4] Block layer patches
  2025-04-25 17:52 [PULL 0/4] Block layer patches Kevin Wolf
                   ` (3 preceding siblings ...)
  2025-04-25 17:52 ` [PULL 4/4] qemu-img: improve queue depth validation in img_bench Kevin Wolf
@ 2025-04-28 17:56 ` Stefan Hajnoczi
  4 siblings, 0 replies; 18+ messages in thread
From: Stefan Hajnoczi @ 2025-04-28 17:56 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: qemu-block, kwolf, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 116 bytes --]

Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/10.0 for any user-visible changes.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PULL 4/4] qemu-img: improve queue depth validation in img_bench
  2025-04-28 13:58     ` Michael Tokarev
@ 2025-05-13 15:06       ` Kevin Wolf
  2025-05-14  9:28         ` Michael Tokarev
  0 siblings, 1 reply; 18+ messages in thread
From: Kevin Wolf @ 2025-05-13 15:06 UTC (permalink / raw)
  To: Michael Tokarev; +Cc: qemu-block, qemu-devel

Am 28.04.2025 um 15:58 hat Michael Tokarev geschrieben:
> 28.04.2025 16:54, Michael Tokarev пишет:
> > 25.04.2025 20:52, Kevin Wolf wrote:
> > > From: Denis Rastyogin <gerben@altlinux.org>
> > > 
> > > This error was discovered by fuzzing qemu-img.
> > > 
> > > Currently, running `qemu-img bench -d 0` in img_bench is allowed,
> > > which is a pointless operation and causes qemu-img to hang.
> > > 
> > > Signed-off-by: Denis Rastyogin <gerben@altlinux.org>
> > > Message-ID: <20250327162423.25154-5-gerben@altlinux.org>
> > > Reviewed-by: Kevin Wolf <kwolf@redhat.com>
> > > Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> > > ---
> > >   qemu-img.c | 2 +-
> > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/qemu-img.c b/qemu-img.c
> > > index 2044c22a4c..76ac5d3028 100644
> > > --- a/qemu-img.c
> > > +++ b/qemu-img.c
> > > @@ -4571,7 +4571,7 @@ static int img_bench(int argc, char **argv)
> > >           {
> > >               unsigned long res;
> > > -            if (qemu_strtoul(optarg, NULL, 0, &res) < 0 || res > INT_MAX) {
> > > +            if (qemu_strtoul(optarg, NULL, 0, &res) <= 0 || res > INT_MAX) {
> > >                   error_report("Invalid queue depth specified");
> > >                   return 1;
> > >               }
> > 
> > FWIW, it's been covered by my qemu-img options patches for way over a year.
> 
> In particular:
> 
> https://lore.kernel.org/qemu-devel/20240927061121.573271-28-mjt@tls.msk.ru/
> 
> I'm still waiting for some feedback from these patches - heard neither ACK
> nor NACK for this rather large work.

Oops, seems I never continued review after patch 5. I'll get back to it.

However, I don't see the above hunk in that series. Am I missing it or
is there another series of yours waiting for review?

Kevin



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PULL 4/4] qemu-img: improve queue depth validation in img_bench
  2025-05-13 15:06       ` Kevin Wolf
@ 2025-05-14  9:28         ` Michael Tokarev
  2025-05-14  9:31           ` Michael Tokarev
  0 siblings, 1 reply; 18+ messages in thread
From: Michael Tokarev @ 2025-05-14  9:28 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: qemu-block, qemu-devel

On 13.05.2025 18:06, Kevin Wolf wrote:
> Am 28.04.2025 um 15:58 hat Michael Tokarev geschrieben:
>> 28.04.2025 16:54, Michael Tokarev пишет:
>>> 25.04.2025 20:52, Kevin Wolf wrote:
>>>> From: Denis Rastyogin <gerben@altlinux.org>
>>>>
>>>> This error was discovered by fuzzing qemu-img.
>>>>
>>>> Currently, running `qemu-img bench -d 0` in img_bench is allowed,
>>>> which is a pointless operation and causes qemu-img to hang.
>>>>
>>>> Signed-off-by: Denis Rastyogin <gerben@altlinux.org>
>>>> Message-ID: <20250327162423.25154-5-gerben@altlinux.org>
>>>> Reviewed-by: Kevin Wolf <kwolf@redhat.com>
>>>> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
>>>> ---
>>>>    qemu-img.c | 2 +-
>>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/qemu-img.c b/qemu-img.c
>>>> index 2044c22a4c..76ac5d3028 100644
>>>> --- a/qemu-img.c
>>>> +++ b/qemu-img.c
>>>> @@ -4571,7 +4571,7 @@ static int img_bench(int argc, char **argv)
>>>>            {
>>>>                unsigned long res;
>>>> -            if (qemu_strtoul(optarg, NULL, 0, &res) < 0 || res > INT_MAX) {
>>>> +            if (qemu_strtoul(optarg, NULL, 0, &res) <= 0 || res > INT_MAX) {
>>>>                    error_report("Invalid queue depth specified");
>>>>                    return 1;
>>>>                }
>>>
>>> FWIW, it's been covered by my qemu-img options patches for way over a year.
>>
>> In particular:
>>
>> https://lore.kernel.org/qemu-devel/20240927061121.573271-28-mjt@tls.msk.ru/
>>
>> I'm still waiting for some feedback from these patches - heard neither ACK
>> nor NACK for this rather large work.
> 
> Oops, seems I never continued review after patch 5. I'll get back to it.
> 
> However, I don't see the above hunk in that series. Am I missing it or
> is there another series of yours waiting for review?

This one:

@@ -4791,27 +4788,17 @@ static int img_bench(const img_cmd_t *ccmd, int 
argc, char **argv)
  );
              break;
          case 'c':
-        {
-            unsigned long res;
-
-            if (qemu_strtoul(optarg, NULL, 0, &res) < 0 || res > INT_MAX) {
-                error_report("Invalid request count specified");
+            count = cvtnum_full("request count", optarg, false, 1, 
INT_MAX);
+            if (count < 0) {
                  return 1;
              }

Thanks,

/mjt


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PULL 4/4] qemu-img: improve queue depth validation in img_bench
  2025-05-14  9:28         ` Michael Tokarev
@ 2025-05-14  9:31           ` Michael Tokarev
  0 siblings, 0 replies; 18+ messages in thread
From: Michael Tokarev @ 2025-05-14  9:31 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: qemu-block, qemu-devel

On 14.05.2025 12:28, Michael Tokarev wrote:
> On 13.05.2025 18:06, Kevin Wolf wrote:
>> Am 28.04.2025 um 15:58 hat Michael Tokarev geschrieben:
>>> 28.04.2025 16:54, Michael Tokarev пишет:
>>>> 25.04.2025 20:52, Kevin Wolf wrote:
>>>>> From: Denis Rastyogin <gerben@altlinux.org>
>>>>>
>>>>> This error was discovered by fuzzing qemu-img.
>>>>>
>>>>> Currently, running `qemu-img bench -d 0` in img_bench is allowed,
>>>>> which is a pointless operation and causes qemu-img to hang.
>>>>>
>>>>> Signed-off-by: Denis Rastyogin <gerben@altlinux.org>
>>>>> Message-ID: <20250327162423.25154-5-gerben@altlinux.org>
>>>>> Reviewed-by: Kevin Wolf <kwolf@redhat.com>
>>>>> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
>>>>> ---
>>>>>    qemu-img.c | 2 +-
>>>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/qemu-img.c b/qemu-img.c
>>>>> index 2044c22a4c..76ac5d3028 100644
>>>>> --- a/qemu-img.c
>>>>> +++ b/qemu-img.c
>>>>> @@ -4571,7 +4571,7 @@ static int img_bench(int argc, char **argv)
>>>>>            {
>>>>>                unsigned long res;
>>>>> -            if (qemu_strtoul(optarg, NULL, 0, &res) < 0 || res > 
>>>>> INT_MAX) {
>>>>> +            if (qemu_strtoul(optarg, NULL, 0, &res) <= 0 || res > 
>>>>> INT_MAX) {
>>>>>                    error_report("Invalid queue depth specified");
>>>>>                    return 1;
>>>>>                }
>>>>
>>>> FWIW, it's been covered by my qemu-img options patches for way over 
>>>> a year.
>>>
>>> In particular:
>>>
>>> https://lore.kernel.org/qemu-devel/20240927061121.573271-28- 
>>> mjt@tls.msk.ru/
>>>
>>> I'm still waiting for some feedback from these patches - heard 
>>> neither ACK
>>> nor NACK for this rather large work.
>>
>> Oops, seems I never continued review after patch 5. I'll get back to it.
>>
>> However, I don't see the above hunk in that series. Am I missing it or
>> is there another series of yours waiting for review?
> 
> This one:

Actually it is the next very similar hunk.  But doesn't matter anymore,
since this 4/4 partial patch has been applied already.

/mjt

> @@ -4791,27 +4788,17 @@ static int img_bench(const img_cmd_t *ccmd, int 
> argc, char **argv)
>   );
>               break;
>           case 'c':
> -        {
> -            unsigned long res;
> -
> -            if (qemu_strtoul(optarg, NULL, 0, &res) < 0 || res > 
> INT_MAX) {
> -                error_report("Invalid request count specified");
> +            count = cvtnum_full("request count", optarg, false, 1, 
> INT_MAX);
> +            if (count < 0) {
>                   return 1;
>               }


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2025-05-14  9:31 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-25 17:52 [PULL 0/4] Block layer patches Kevin Wolf
2025-04-25 17:52 ` [PULL 1/4] file-posix: probe discard alignment on Linux block devices Kevin Wolf
2025-04-25 17:52 ` [PULL 2/4] block/io: skip head/tail requests on EINVAL Kevin Wolf
2025-04-25 17:52 ` [PULL 3/4] block: Remove unused callback function *bdrv_aio_pdiscard Kevin Wolf
2025-04-25 17:52 ` [PULL 4/4] qemu-img: improve queue depth validation in img_bench Kevin Wolf
2025-04-28 13:54   ` Michael Tokarev
2025-04-28 13:58     ` Michael Tokarev
2025-05-13 15:06       ` Kevin Wolf
2025-05-14  9:28         ` Michael Tokarev
2025-05-14  9:31           ` Michael Tokarev
2025-04-28 17:56 ` [PULL 0/4] Block layer patches Stefan Hajnoczi
  -- strict thread matches above, loose matches on Subject: below --
2025-04-08 13:00 Kevin Wolf
2025-04-09  8:31 ` Stefan Hajnoczi
2023-11-28 14:09 Kevin Wolf
2023-03-28 12:35 Kevin Wolf
2023-03-28 19:42 ` Peter Maydell
2019-09-20 16:20 Kevin Wolf
2019-09-23  9:49 ` Peter Maydell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).