Commit graph

557 commits

Author SHA1 Message Date
Stefano Garzarella
e01ece1a60 vhost/kernel: handle EADDRINUSE in set_guest_cid test
When running tests in parallel (e.g. in CI), set_guest_cid() can fail
with EADDRINUSE if another test or VM already claimed the same CID.

From the test's perspective this is still a successful outcome: the
ioctl was issued correctly and the kernel rejected it for a valid
reason, so the code path is exercised either way.

Rather than complicating the test by retrying with different CIDs,
skip the assertion gracefully.

Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
2026-02-16 14:40:08 +02:00
Rob Bradford
93e2d9cf91 vhost-user: frontend: Read the full reply for set_log_base
This code was incorrectly assuming that it was a plain ack but instead
the backend code in this repository (and the QEMU behaviour) is to
expect a full struct of reply.

Fixes: #217

Signed-off-by: Rob Bradford <rbradford@meta.com>
2026-01-27 17:16:34 +01:00
Rob Bradford
5c7cf7650a vhost-user: tests: Fix set_log_base in dummy backend
When it returns an error then the reply message is not sent and the
frontend hangs expecting a reply. This bug in the test becomes clear
when the correct reply size is read in the frontend for set_log_base.

Signed-off-by: Rob Bradford <rbradford@meta.com>
2026-01-27 17:16:34 +01:00
Stefano Garzarella
9756a7d427 vhost: fix double-locking in Backend to Fronted req handlers
Some methods acquire the mutex lock twice: once to check feature flags
and again when calling send_message(), this is inefficient and also
racy, so acquire the lock once and reuse the guard for both operations.
Remove send_message() wrapper method now unused.

Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
2026-01-09 13:12:22 +01:00
Stefano Garzarella
c64b2058e2 vhost: rename Backend::node to inner and inline lock() calls
Rename the `node` field to `inner` and remove the `node()` helper method,
replacing all usages with direct `self.inner.lock().unwrap()` calls for
better explicitness.

Suggested-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
2026-01-09 13:12:22 +01:00
Stefano Garzarella
16aac0c697 vhost: implement From<Error> for io::Error
Add a From trait implementation to convert vhost_user::Error to io::Error.
This allows using the ? operator for cleaner error handling in methods
that return io::Result.

Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
2026-01-09 13:12:22 +01:00
Stefano Garzarella
449b8f58e8 Pin vm-memory to 0.17.1
As reported in https://github.com/rust-vmm/vm-memory/pull/369,
vm-memory 0.17.2:
    breaks the vhost-user-backend crate, whose vring types require some
    type `M: GuestAddressSpace` with the expectation that `M::memory()`
    will return something that derefs to an `0.17::GuestMemory`"

So let's pin vm-memory to 0.17.1 for now while waiting for 0.17.3 release
that will include that fix.

Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
2026-01-08 13:22:31 +02:00
dependabot[bot]
894523c7e8 build(deps): bump rust-vmm-ci from e34c504 to 65d339d
Bumps [rust-vmm-ci](https://github.com/rust-vmm/rust-vmm-ci) from `e34c504` to `65d339d`.
- [Commits](e34c504162...65d339dde5)

---
updated-dependencies:
- dependency-name: rust-vmm-ci
  dependency-version: 65d339dde588ac31096b1625072d89ca18d8a21c
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-08 13:22:31 +02:00
Matej Hrica
59d845cc2c Bump test coverage value for x86_64
The last commit adds tests, that cover all of the default impls of functions,
causing the coverage to increase too much - bump the value manually.

Signed-off-by: Matej Hrica <mhrica@redhat.com>
2025-12-10 15:28:47 +02:00
Matej Hrica
5b96cb4fe2 Add tests for default impls of Frontend req handlers
Add tests to assert return values (and existence) of default implementation
of VhostUserFrontendReqHandler and VhostUserFrontendReqHandlerMut trait
methods.

Signed-off-by: Matej Hrica <mhrica@redhat.com>
2025-12-10 15:28:47 +02:00
Albert Esteve
fd169b9df3 vhost_user: Add support for SHMEM_MAP/UNMAP backend requests
Add request defintions and methods for using the new SHMEM_MAP/UNMAP
backend requests.

Note that at the time of writing this, these requests are part of this RFC
in QEMU:
https://mail.gnu.org/archive/html/qemu-devel/2024-06/msg05736.html

Co-authored-by: Albert Esteve <aesteve@redhat.com>
Co-authored-by: Matej Hrica <mhrica@redhat.com>

Signed-off-by: Albert Esteve <aesteve@redhat.com>
Signed-off-by: Matej Hrica <mhrica@redhat.com>
2025-12-10 15:28:47 +02:00
Matej Hrica
bc6b4cc59f backend_req::tests: Extract test setup to a function
Extract creating a backend and a frontend from a socketpair to a utility
function.

Signed-off-by: Matej Hrica <mhrica@redhat.com>
2025-12-10 15:28:47 +02:00
dependabot[bot]
192551a0b3 build(deps): bump rust-vmm-ci from b4bb768 to e34c504
Bumps [rust-vmm-ci](https://github.com/rust-vmm/rust-vmm-ci) from `b4bb768` to `e34c504`.
- [Commits](b4bb7687a1...e34c504162)

---
updated-dependencies:
- dependency-name: rust-vmm-ci
  dependency-version: e34c5041625322ab4b998307a8852ecfd5ec51f9
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 10:12:14 +02:00
Egor Lazarchuk
52b8d40b31 vhost-user: prepare v0.21.0 release
Signed-off-by: Egor Lazarchuk <yegorlz@amazon.co.uk>
2025-11-18 17:57:37 +01:00
Egor Lazarchuk
d2caea1adc vhost: Prepare v0.15.0 release
Signed-off-by: Egor Lazarchuk <yegorlz@amazon.co.uk>
2025-11-18 17:57:37 +01:00
dependabot[bot]
1d39cf5cbb build(deps): bump the vhost group across 1 directory with 2 updates
Updates the requirements on [virtio-queue](https://github.com/rust-vmm/vm-virtio) and [vm-memory](https://github.com/rust-vmm/vm-memory) to permit the latest version.

Updates `virtio-queue` to 0.17.0
- [Release notes](https://github.com/rust-vmm/vm-virtio/releases)
- [Commits](https://github.com/rust-vmm/vm-virtio/compare/virtio-queue-v0.16.0...virtio-queue-v0.17.0)

Updates `vm-memory` to 0.17.1
- [Release notes](https://github.com/rust-vmm/vm-memory/releases)
- [Changelog](https://github.com/rust-vmm/vm-memory/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-vmm/vm-memory/compare/v0.16.2...v0.17.1)

---
updated-dependencies:
- dependency-name: virtio-queue
  dependency-version: 0.17.0
  dependency-type: direct:production
  dependency-group: vhost
- dependency-name: vm-memory
  dependency-version: 0.17.1
  dependency-type: direct:production
  dependency-group: vhost
...

Signed-off-by: dependabot[bot] <support@github.com>
[SG: adapted code to vm-memory changes, mainly related to changes on
 return types (e.g. Option vs Result, etc.)]
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
2025-11-18 08:35:16 +01:00
dependabot[bot]
024213c4d6 build(deps): bump rust-vmm-ci from 1b48931 to b4bb768
Bumps [rust-vmm-ci](https://github.com/rust-vmm/rust-vmm-ci) from `1b48931` to `b4bb768`.
- [Commits](1b48931447...b4bb7687a1)

---
updated-dependencies:
- dependency-name: rust-vmm-ci
  dependency-version: b4bb7687a11bc6bdb07a37b71d2795b9fe77863f
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
[SG: adapted coverage value that changed a bit with the new rust in the CI]
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
2025-11-17 18:09:18 +01:00
Patrick Roy
6283571832 fix documentation build on docs.rs
Instruct the docs.rs documentation builder to pass --cfg
RUTSDOC_disable_feature_compat_errors in RUSTFLAGS when building
documentation, so that builds dont fail because of compile_error!() and
incompatible features [1].

[1]: https://docs.rs/crate/vhost/0.14.0/builds/2193201

Signed-off-by: Patrick Roy <patrick.roy@linux.dev>
2025-10-21 09:52:47 +02:00
Patrick Roy
f979631610 fix cargo doc CI step
Introduce a dummy feature to hack around `cargo doc --all-features`
always hitting the compile_error!(...) in vhost/src/lib.rs about
incompatible features.

This is happening because when documenting vhost-user-backend, cargo
does not pass --cfg doc to dependencies, meaning the cfg(not(doc))
attribute that is supposed to eliminate this compile_error!() invokation
when building docs does not actually trigger. Hence cargo doc fails.

Introduce a custom cfg, which we tell docs.rs to set during
documentation build, which disables the compile_error!(). Our CI also
sets this flag for the rustdoc step (via an ugly `sed` in the pipeline
definition). This cfg is also set by rust-vmm-ci for the cargo doc step.

Note that we need both cfg(not(doc)) and
cfg(not(RUTSDOC_disable_feature_compat_errors)), because lib.rs gets
processed twice, onces by rustc (where the --cfg is passed via
RUSTFLAGS), and once by rustdoc itself, where RUSTFLAGS are ignored, and
instead the cfg(doc) macro comes into play (but rustdoc is only ran on
the crate for which we are actually generating docs, not the
dependencies).

Signed-off-by: Patrick Roy <patrick.roy@linux.dev>
2025-10-21 09:52:47 +02:00
Patrick Roy
b222aac3b9 revert to using normal rust-vmm-ci tests
Now that rust-vmm-ci uses cargo-all-features, we can deal with the
incompatiblity of the xen and postcopy features by simply marking them
as incompatible in Cargo.toml, instead of needing to define separate CI
steps.

note: this commit currently symlinks rust-vmm-ci-tests.json to
rust-vmm-ci/.buildkite/test_descriptions.json, and removes all tests
from custom-tests.json. This is to illustrate that the new setup works
without changes to the buildkite pipeline. Once that is confirmed, the
pipeline should be updated to just use the rust-vmm-ci test generaiton
routine, and the entire .buildkite directory can be removed.

Signed-off-by: Patrick Roy <patrick.roy@linux.dev>
2025-10-21 09:52:47 +02:00
Patrick Roy
cf91d1defa configure cargo-all-features
Set it up so that it does not try to combine the xen and postcopy
features, and also ignore the test-only test_utils feature.

Signed-off-by: Patrick Roy <patrick.roy@linux.dev>
2025-10-21 09:52:47 +02:00
Patrick Roy
2cc12f642e vhost: fix unused function warnings on some feature combos
Signed-off-by: Patrick Roy <patrick.roy@linux.dev>
2025-10-21 09:52:47 +02:00
Patrick Roy
93b2773386 vhost: fix undefined behavior in get_vring_base()
By using ioctl_with_ref() instead of ioctl_with_mut_ref(), we attempted
to mutate through an immutable reference, so rustc was well within its
rights to assume that `vring_state` does not change across the ioctl
call, and hence optimize the return value of the function to simply be
the value that `vring_state.num` was initialized to (which is 0).

Signed-off-by: Patrick Roy <patrick.roy@linux.dev>
2025-10-21 09:52:47 +02:00
Patrick Roy
5d57b5df70 chore: update rust-vmm-ci
pick up the commit that fixed the typo in the environment variable for
the rust doc test

Signed-off-by: Patrick Roy <patrick.roy@linux.dev>
2025-10-21 09:52:47 +02:00
dependabot[bot]
122ad32869 build(deps): bump rust-vmm-ci from c0f5d4c to 3e24835
Bumps [rust-vmm-ci](https://github.com/rust-vmm/rust-vmm-ci) from `c0f5d4c` to `3e24835`.
- [Commits](c0f5d4c3f5...3e24835346)

---
updated-dependencies:
- dependency-name: rust-vmm-ci
  dependency-version: 3e248353468a9aa0efa844d39eecf24e1dbdc3f3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 10:56:38 +03:00
dependabot[bot]
5468828b06 build(deps): bump rust-vmm-ci from fc4584d to c0f5d4c
Bumps [rust-vmm-ci](https://github.com/rust-vmm/rust-vmm-ci) from `fc4584d` to `c0f5d4c`.
- [Commits](fc4584d8b8...c0f5d4c3f5)

---
updated-dependencies:
- dependency-name: rust-vmm-ci
  dependency-version: c0f5d4c3f58094c90ea12200f513b21e457983bd
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-30 10:30:00 +02:00
Alyssa Ross
34b75fdae5 vhost_user: don't take ownership of Listener
The vhost-device devices all call VhostUserDaemon::serve in a loop, to
handle reconnections.  This is not ideal, because a new listener is
created each loop iteration, which means that each time, the old
socket is unlinked and a new one is created.  This means that there's
a potential race where a frontend attempts to connect to the backend
before the new socket is created.

A more robust way to achieve this would be to have the devices create
their own listeners, and pass the same one to VhostUserDaemon::start
on each loop iteration, instead of letting VhostUserDaemon::serve
create it repeatedly.  This was not previously possible though,
because VhostUserDaemon::start consumed the listener, even though it
didn't need to.

Because it's now possible to call VhostUserDaemon::start multiple
times with the same socket, I've removed the TODO about handling
reconnection.

Signed-off-by: Alyssa Ross <hi@alyssa.is>
2025-09-10 09:09:29 +02:00
Alyssa Ross
e20a5a5bee vhost_user: fix mismatched lifetime warning
warning: hiding a lifetime that's elided elsewhere is confusing
   --> vhost/src/vhost_user/frontend.rs:131:13
    |
131 |     fn node(&self) -> MutexGuard<FrontendInternal> {
    |             ^^^^^     ---------------------------- the same lifetime is hidden here
    |             |
    |             the lifetime is elided here
    |
    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
help: use `'_` for type paths
    |
131 |     fn node(&self) -> MutexGuard<'_, FrontendInternal> {
    |                                  +++

Signed-off-by: Alyssa Ross <hi@alyssa.is>
2025-09-09 14:59:13 +03:00
dependabot[bot]
6a559e2aaf build(deps): bump rust-vmm-ci from 0b1cb86 to fc4584d
Bumps [rust-vmm-ci](https://github.com/rust-vmm/rust-vmm-ci) from `0b1cb86` to `fc4584d`.
- [Commits](0b1cb86353...fc4584d8b8)

---
updated-dependencies:
- dependency-name: rust-vmm-ci
  dependency-version: fc4584d8b805be4e8193d43d9ba6519f9a0f43a5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-02 13:10:28 +02:00
dependabot[bot]
266854e492 build(deps): update userfaultfd requirement
---
updated-dependencies:
- dependency-name: userfaultfd
  dependency-version: 0.9.0
  dependency-type: direct:production
  dependency-group: vhost
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 09:28:01 +02:00
Wenyu Huang
18bf2a5613 Replace Eventfd with EventNotifier/EventConsumer
Eventfd is Linux-specific. To support more platforms, we replace it with
the EventNotifier/EventConsumer abstractions.
EventSender and EventReceiver are wrappers that encapsulate eventfd functionality
Use pipefd to replace eventfd in the test.

Signed-off-by: Wenyu Huang <huangwenyuu@outlook.com>
2025-08-27 10:18:07 +02:00
Wenyu Huang
e869735f3f chore: update the vmm-sys-util version
Update to v0.15.0 which supports sock_ctrl_msg on POSIX and adds
a cross platform event notification that uses EventFd when available
or pipe().

Because sock_ctrl_msg modifies the recv_with_fds, we need to modify the test
in vhost/src/vhost-user/connection.rs at the same time

Signed-off-by: Wenyu Huang <huangwenyuu@outlook.com>
2025-08-27 10:18:07 +02:00
German Maglione
580f19f16b Fix "mismatched lifetime syntaxes" warning
rust 1.89 made the "mismatched lifetime syntaxes" lint to show a warning
by default:
https://blog.rust-lang.org/2025/08/07/Rust-1.89.0/#mismatched-lifetime-syntaxes-lint

Add a placeholder lifetime to `vhost_user_backend::vring::VringStateMutGuard`
to be explicit.

Signed-off-by: German Maglione <gmaglione@redhat.com>
2025-08-27 10:10:08 +02:00
dependabot[bot]
cfff91eb0a build(deps): bump rust-vmm-ci from af54708 to 0b1cb86
Bumps [rust-vmm-ci](https://github.com/rust-vmm/rust-vmm-ci) from `af54708` to `0b1cb86`.
- [Commits](af54708293...0b1cb86353)

---
updated-dependencies:
- dependency-name: rust-vmm-ci
  dependency-version: 0b1cb86353cc093f2e17d7e9f6820de80a6c274d
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13 11:35:52 +03:00
Alyssa Ross
c2dafc78c1 vhost: impl From<UnixListener> for Listener
It was already possible to do this as follows:

	unsafe { Listener::from_raw_fd(listener.into_raw_fd()) }

This just factors the From implementation out of the FromRawFd
implementation so it's possible to do the conversion without an
unnecessary unsafe in application code.

Signed-off-by: Alyssa Ross <hi@alyssa.is>
2025-07-30 14:09:59 +03:00
Manos Pitsidianakis
fce6393fca CODEOWNERS: add myself as reviewer
Help out with PR reviews and various maintenance tasks.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
2025-07-24 13:09:49 +02:00
Stefano Garzarella
92b9df3bfd chore: fix new clippy warnings
clippy in the new rust toolchain (1.87) in our CI is highlighting
something to improve.
Mostly done with `cargo clippy --fix` + silence
`clippy::match_overlapping_arm` since EWOULDBLOCK equals to EGAIN on
linux.

Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
2025-07-17 13:12:15 +02:00
dependabot[bot]
55f5b29971 build(deps): bump rust-vmm-ci from aa2f8a9 to af54708
Bumps [rust-vmm-ci](https://github.com/rust-vmm/rust-vmm-ci) from `aa2f8a9` to `af54708`.
- [Commits](aa2f8a90e4...af54708293)

---
updated-dependencies:
- dependency-name: rust-vmm-ci
  dependency-version: af547082938b44b69b6f1bb44c1af8b405d7650c
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-17 13:12:15 +02:00
Jinank Jain
eae4f73778 vhost-user-backend: Prepare for new release v0.20.0
This release upgraded virtio-queue and virtio-bindings to latest
released version.

Signed-off-by: Jinank Jain <jinankjain@microsoft.com>
2025-07-03 12:42:25 +02:00
Jinank Jain
3db761bb85 build: Update virtio-queue and virtio-bindings
Bump virtio-queue from v0.16.0 to v0.16.0

Bump virtio-bindings from v0.2.5 to v0.2.6

Signed-off-by: Jinank Jain <jinankjain@microsoft.com>
2025-07-03 12:42:25 +02:00
Hengqi Chen
82e09ed2c4 vhost: Fix broken link in vhost/README.md
The link to vhost-user protocol is 404, replace it with
the latest one.

Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com>
2025-06-27 08:55:59 +02:00
Christian Speich
f9b25c2498 vhost: Fix building docs
Building docs (as on docs.rs) has been broken since 8ee8739. This commit
introduces POSTCOPY and made this feature mutually exclusive with xen.

As docs are build for all features the corresponding check will be
triggered and the docs can not be built.

This patch extends the check to allow both "postcopy" and "xen" to be
enabled when building docs.

Signed-off-by: Christian Speich <christian@spei.ch>
2025-06-25 15:26:34 +02:00
Nelson Wong
03ba6ea92c vhost: correct 'trucate' to 'truncate'
There are several typos when using "truncate" on some messages and on the error type \`FileTruncateError\`.

Signed-off-by: Nelson Wong <wong.nel@protonmail.com>
2025-06-18 16:20:28 +03:00
Jinank Jain
9a744c22c8 vhost: Fix clippy warning from nightly compiler
There is a new warning reported by nightly compiler about mismatched
lifetime syntaxes. Add the missing lifetime where ever required.

Signed-off-by: Jinank Jain <jinankjain@microsoft.com>
2025-06-13 10:37:23 +02:00
Jinank Jain
49afe46e17 vhost-user-backend: Prepare for new release v0.19.0
This release upgraded virtio-queue and virtio-bindings to latest
released version.

Signed-off-by: Jinank Jain <jinankjain@microsoft.com>
2025-06-12 13:55:46 +02:00
Jinank Jain
ad7268f5e7 build: Update virtio-queue and virtio-bindings
Bump virtio-queue from v0.14.0 to v0.15.0

Bump virtio-bindings from v0.2.1 to v0.2.5

Signed-off-by: Jinank Jain <jinankjain@microsoft.com>
2025-06-12 13:55:46 +02:00
dependabot[bot]
77aed7480e build(deps): bump rust-vmm-ci from c3ef897 to aa2f8a9
Bumps [rust-vmm-ci](https://github.com/rust-vmm/rust-vmm-ci) from `c3ef897` to `aa2f8a9`.
- [Commits](c3ef897738...aa2f8a90e4)

---
updated-dependencies:
- dependency-name: rust-vmm-ci
  dependency-version: aa2f8a90e46533de8a58f19cd0c417de856d4437
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-10 10:47:50 +02:00
Babis Chalios
9c8dc0b749 vhost-user-backend: prepare v0.18.0 release
This release
1. Adds support for `VHOST_USER_GET_SHARED_OBJECT`
2. Updates to vhost to 0.14.0, vm-memory 0.16.2 and vmm-sys-util to
   0.14.0

Signed-off-by: Babis Chalios <bchalios@amazon.es>
2025-06-04 10:15:26 +02:00
Babis Chalios
31d323e293 vhost: Prepare v0.14.0 release
This release:
1. Adds support for `VHOST_USER_GET_SHARED_OBJECT`
2. Fixes the reply header for an error case in POSTCOPY_ADVISE
3. `VHOST_USER_PROTOCOL_F_REPLY_ACK` is now always supported by backends
4. Bumps vm-memory to 0.16.2 and vmm-sys-util to 0.14.0

Signed-off-by: Babis Chalios <bchalios@amazon.es>
2025-06-04 10:15:26 +02:00
Alyssa Ross
14db3cd165 vhost_user: fix replies without GET_PROTOCOL_FEATURES
I observed hangs in the following situation when using Cloud
Hypervisor with virtiofsd:

1. Start virtiofsd
2. Start Cloud Hypervisor instance 1, connected to virtiofsd.
3. Start Cloud Hypervisor instance 2, waiting for migration.
4. Migrate VM from Cloud Hypervisor instance 1 to 2.
5. Start virtiofsd again.

The hangs happened because Cloud Hypervisor remembered, as part of the
migration data, which vhost-user protocol features the backend for its
fs device supported.  Instance 2 therefore never sent
GET_PROTOCOL_FEATURES to the second invocation of virtiofsd.  This
should work, but it didn't, because update_reply_ack_flag() checked
whether self.protocol_features contained GET_PROTOCOL_FEATURES, but
self.protocol_features is only filled in when GET_PROTOCOL_FEATURES is
called.  As a result, Cloud Hypervisor expected a reply that virtiofsd
would never send.

Since REPLY_ACK is handled entirely by the vhost-user library, and not
by the backend, there's no need to ask the backend whether it supports
REPLY_ACK in the first place, so we can just drop the check for that
from update_reply_ack_flag().  We know that we always support it, so
we just need to check whether the backend has acked it.  This fixes
the hang described above.

Since we will now always reply if the backend acks the feature,
REPLY_ACK is now always included in the set of features returned by
GET_PROTOCOL_FEATURES, just like with XEN_MMAP (when enabled).

Signed-off-by: Alyssa Ross <hi@alyssa.is>
2025-06-03 15:56:15 +02:00