All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@redhat.com>
To: Hanna Czenczek <hreitz@redhat.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org,
	Kevin Wolf <kwolf@redhat.com>, John Snow <jsnow@redhat.com>,
	"Denis V . Lunev" <den@openvz.org>,
	Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>
Subject: Re: [PATCH 7/9] block: Add delay-alert-ms property
Date: Thu, 3 Sep 2026 10:30:56 -0400	[thread overview]
Message-ID: <20260903143055.GE825275@fedora> (raw)
In-Reply-To: <20260831135206.126184-8-hreitz@redhat.com>

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

On Mon, Aug 31, 2026 at 03:52:03PM +0200, Hanna Czenczek wrote:
> This device property allows setting up an I/O latency threshold for when
> to emit a delay QMP event.
> 
> Signed-off-by: Hanna Czenczek <hreitz@redhat.com>
> ---
>  include/hw/block/block.h   |  5 ++++-
>  blockdev.c                 | 16 +++++++++++++++-
>  hw/block/block.c           |  4 +++-
>  tests/qemu-iotests/172.out | 38 ++++++++++++++++++++++++++++++++++++++
>  4 files changed, 60 insertions(+), 3 deletions(-)
> 
> diff --git a/include/hw/block/block.h b/include/hw/block/block.h
> index df941df19f2..e7e401dd303 100644
> --- a/include/hw/block/block.h
> +++ b/include/hw/block/block.h
> @@ -36,6 +36,7 @@ typedef struct BlockConf {
>      BlockdevOnError werror;
>      uint32_t num_stats_intervals;
>      uint32_t *stats_intervals;
> +    uint32_t delay_alert_ms;
>  } BlockConf;
>  
>  static inline unsigned int get_physical_block_exp(BlockConf *conf)
> @@ -83,7 +84,9 @@ static inline unsigned int get_physical_block_exp(BlockConf *conf)
>                              _conf.account_failed, ON_OFF_AUTO_AUTO),    \
>      DEFINE_PROP_ARRAY("stats-intervals", _state,                        \
>                       _conf.num_stats_intervals, _conf.stats_intervals,  \
> -                     qdev_prop_uint32, uint32_t)
> +                     qdev_prop_uint32, uint32_t),                       \
> +    DEFINE_PROP_UINT32("delay-alert-ms", _state, _conf.delay_alert_ms,  \
> +                       0)                                               \

The latency histogram feature uses nanoseconds (64-bit integer) whereas
this patch series uses delay-alert-ms (uint32) and a double
floating-point seconds value in the QMP event. Maybe stick to 64-bit
integer nanoseconds everywhere for consistency?

>  
>  #define DEFINE_BLOCK_PROPERTIES(_state, _conf)                          \
>      DEFINE_PROP_DRIVE("drive", _state, _conf.blk),                      \
> diff --git a/blockdev.c b/blockdev.c
> index 195bac8af01..9c76e89ef38 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -496,6 +496,7 @@ static BlockBackend *blockdev_init(const char *file, QDict *bs_opts,
>      BlockdevDetectZeroesOptions detect_zeroes =
>          BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF;
>      const char *throttling_group = NULL;
> +    uint64_t delay_alert_ns;
>  
>      /* Check common options by copying from bs_opts to opts, all other options
>       * stay in bs_opts for processing by bdrv_open(). */
> @@ -580,6 +581,14 @@ static BlockBackend *blockdev_init(const char *file, QDict *bs_opts,
>  
>      read_only = qemu_opt_get_bool(opts, BDRV_OPT_READ_ONLY, false);
>  
> +    delay_alert_ns = qemu_opt_get_number(opts, "delay-alert-ms", 0);
> +    if (delay_alert_ns > (uint64_t)INT64_MAX / SCALE_MS) {
> +        error_setg(errp, "delay-alert-ms must not exceed %" PRId64,
> +                   INT64_MAX / SCALE_MS);
> +        goto early_err;
> +    }
> +    delay_alert_ns *= SCALE_MS;
> +
>      /* init */
>      if ((!file || !*file) && !qdict_size(bs_opts)) {
>          BlockBackendRootState *blk_rs;
> @@ -618,7 +627,7 @@ static BlockBackend *blockdev_init(const char *file, QDict *bs_opts,
>          bs->detect_zeroes = detect_zeroes;
>  
>          block_acct_setup(blk_get_stats(blk), account_invalid, account_failed,
> -                         NULL, 0, 0, NULL);
> +                         NULL, 0, delay_alert_ns, NULL);
>  
>          if (!parse_stats_intervals(blk_get_stats(blk), interval_list, errp)) {
>              blk_unref(blk);
> @@ -3753,6 +3762,11 @@ QemuOptsList qemu_common_drive_opts = {
>              .type = QEMU_OPT_BOOL,
>              .help = "whether to account for failed I/O operations "
>                      "in the statistics",
> +        },{
> +            .name = "delay-alert-ms",
> +            .type = QEMU_OPT_NUMBER,
> +            .help = "threshold in ms when to emit an I/O operation "
> +                    "delay QMP event",
>          },
>          { /* end of list */ }
>      },
> diff --git a/hw/block/block.c b/hw/block/block.c
> index 19301c6f995..be0ea89cb79 100644
> --- a/hw/block/block.c
> +++ b/hw/block/block.c
> @@ -207,6 +207,7 @@ bool blkconf_apply_backend_options(BlockConf *conf, bool readonly,
>      BlockBackend *blk = conf->blk;
>      BlockdevOnError rerror, werror;
>      uint64_t perm, shared_perm;
> +    uint64_t delay_alert_ns;
>      bool wce;
>      int ret;
>  
> @@ -249,9 +250,10 @@ bool blkconf_apply_backend_options(BlockConf *conf, bool readonly,
>      blk_set_enable_write_cache(blk, wce);
>      blk_set_on_error(blk, rerror, werror);
>  
> +    delay_alert_ns = (uint64_t)conf->delay_alert_ms * SCALE_MS;
>      if (!block_acct_setup(blk_get_stats(blk), conf->account_invalid,
>                            conf->account_failed, conf->stats_intervals,
> -                          conf->num_stats_intervals, 0, errp)) {
> +                          conf->num_stats_intervals, delay_alert_ns, errp)) {
>          return false;
>      }
>      return true;
> diff --git a/tests/qemu-iotests/172.out b/tests/qemu-iotests/172.out
> index a023cd407de..ea6a1875eb3 100644
> --- a/tests/qemu-iotests/172.out
> +++ b/tests/qemu-iotests/172.out
> @@ -31,6 +31,7 @@ Testing:
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "288"
>  
>  
> @@ -61,6 +62,7 @@ Testing: -fda TEST_DIR/t.qcow2
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/unattached/device[N]
> @@ -98,6 +100,7 @@ Testing: -fdb TEST_DIR/t.qcow2
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>                dev: floppy, id ""
>                  unit = 0 (0x0)
> @@ -113,6 +116,7 @@ Testing: -fdb TEST_DIR/t.qcow2
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "288"
>  floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/unattached/device[N]
> @@ -154,6 +158,7 @@ Testing: -fda TEST_DIR/t.qcow2 -fdb TEST_DIR/t.qcow2.2
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>                dev: floppy, id ""
>                  unit = 0 (0x0)
> @@ -169,6 +174,7 @@ Testing: -fda TEST_DIR/t.qcow2 -fdb TEST_DIR/t.qcow2.2
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/unattached/device[N]
> @@ -211,6 +217,7 @@ Testing: -fdb
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "288"
>                dev: floppy, id ""
>                  unit = 0 (0x0)
> @@ -226,6 +233,7 @@ Testing: -fdb
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "288"
>  
>  
> @@ -256,6 +264,7 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/unattached/device[N]
> @@ -293,6 +302,7 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2,index=1
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>                dev: floppy, id ""
>                  unit = 0 (0x0)
> @@ -308,6 +318,7 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2,index=1
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "288"
>  floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/unattached/device[N]
> @@ -349,6 +360,7 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=floppy,file=TEST_DIR/t
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>                dev: floppy, id ""
>                  unit = 0 (0x0)
> @@ -364,6 +376,7 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=floppy,file=TEST_DIR/t
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/unattached/device[N]
> @@ -409,6 +422,7 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/peripheral-anon/device[N]
> @@ -446,6 +460,7 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,unit=1
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/peripheral-anon/device[N]
> @@ -483,6 +498,7 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qco
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>                dev: floppy, id ""
>                  unit = 0 (0x0)
> @@ -498,6 +514,7 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qco
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/peripheral-anon/device[N]
> @@ -549,6 +566,7 @@ Testing: -fda TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>                dev: floppy, id ""
>                  unit = 0 (0x0)
> @@ -564,6 +582,7 @@ Testing: -fda TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/unattached/device[N]
> @@ -606,6 +625,7 @@ Testing: -fda TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>                dev: floppy, id ""
>                  unit = 0 (0x0)
> @@ -621,6 +641,7 @@ Testing: -fda TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/unattached/device[N]
> @@ -663,6 +684,7 @@ Testing: -fdb TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>                dev: floppy, id ""
>                  unit = 1 (0x1)
> @@ -678,6 +700,7 @@ Testing: -fdb TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/unattached/device[N]
> @@ -720,6 +743,7 @@ Testing: -fdb TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>                dev: floppy, id ""
>                  unit = 1 (0x1)
> @@ -735,6 +759,7 @@ Testing: -fdb TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/unattached/device[N]
> @@ -786,6 +811,7 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.q
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>                dev: floppy, id ""
>                  unit = 0 (0x0)
> @@ -801,6 +827,7 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.q
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/unattached/device[N]
> @@ -843,6 +870,7 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.q
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>                dev: floppy, id ""
>                  unit = 0 (0x0)
> @@ -858,6 +886,7 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.q
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/unattached/device[N]
> @@ -906,6 +935,7 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -global floppy.drive=none0 -device
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/peripheral-anon/device[N]
> @@ -973,6 +1003,7 @@ Testing: -device floppy
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "288"
>  
>  Testing: -device floppy,drive-type=120
> @@ -1000,6 +1031,7 @@ Testing: -device floppy,drive-type=120
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "120"
>  
>  Testing: -device floppy,drive-type=144
> @@ -1027,6 +1059,7 @@ Testing: -device floppy,drive-type=144
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  
>  Testing: -device floppy,drive-type=288
> @@ -1054,6 +1087,7 @@ Testing: -device floppy,drive-type=288
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "288"
>  
>  
> @@ -1084,6 +1118,7 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,drive-t
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "120"
>  none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/peripheral-anon/device[N]
> @@ -1121,6 +1156,7 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,drive-t
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "288"
>  none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/peripheral-anon/device[N]
> @@ -1161,6 +1197,7 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,logical
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/peripheral-anon/device[N]
> @@ -1198,6 +1235,7 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,physica
>                  account-invalid = "auto"
>                  account-failed = "auto"
>                  stats-intervals = <null>
> +                delay-alert-ms = 0 (0x0)
>                  drive-type = "144"
>  none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
>      Attached to:      /machine/peripheral-anon/device[N]
> -- 
> 2.55.0
> 

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

  reply	other threads:[~2026-09-03 14:32 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-31 13:51 [PATCH 0/9] block: BLOCK_IO_DELAY event Hanna Czenczek
2026-08-31 13:51 ` [PATCH 1/9] block/accounting: Add offset to BlockAcctCookie Hanna Czenczek
2026-09-07 10:05   ` Jesper Wendel Devantier
2026-08-31 13:51 ` [PATCH 2/9] qapi/block: Add IoAccountingOperation enum Hanna Czenczek
2026-09-03 14:32   ` Markus Armbruster
2026-08-31 13:51 ` [PATCH 3/9] qapi/block: Add BLOCK_IO_DELAY event Hanna Czenczek
2026-09-03 14:36   ` Markus Armbruster
2026-08-31 13:52 ` [PATCH 4/9] block-backend: Public blk_get_attached_dev_path() Hanna Czenczek
2026-08-31 13:52 ` [PATCH 5/9] block/accounting: Add BB field to latency checker Hanna Czenczek
2026-08-31 13:52 ` [PATCH 6/9] block/accounting: Emit BLOCK_IO_DELAY event Hanna Czenczek
2026-09-03 14:23   ` Stefan Hajnoczi
2026-08-31 13:52 ` [PATCH 7/9] block: Add delay-alert-ms property Hanna Czenczek
2026-09-03 14:30   ` Stefan Hajnoczi [this message]
2026-08-31 13:52 ` [PATCH 8/9] block/accounting: Move latency_ns override down Hanna Czenczek
2026-09-03 15:08   ` Stefan Hajnoczi
2026-08-31 13:52 ` [PATCH 9/9] iotests: Add delay-alert test Hanna Czenczek
2026-09-03 15:16   ` Stefan Hajnoczi
2026-09-03 14:08 ` [PATCH 0/9] block: BLOCK_IO_DELAY event Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260903143055.GE825275@fedora \
    --to=stefanha@redhat.com \
    --cc=armbru@redhat.com \
    --cc=den@openvz.org \
    --cc=eblake@redhat.com \
    --cc=hreitz@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.