Anatol Belski
e61901dfdc
block: qcow: Add tests for incompatible feature bit rejection
...
Add test cases verifying QCOW2 v3 images with unsupported incompatible
feature bits are correctly rejected.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2026-01-23 18:58:56 +00:00
Anatol Belski
7c99c169ba
block: qcow: Validate incompatible feature bits
...
Parse the feature name table header extension to provide descriptive
error messages when unsupported incompatible features are detected.
Currently only the compression bit (bit 3, zstd) is supported.
This prevents opening qcow2 images with features that would cause
incorrect behavior or data corruption (e.g., dirty bit, corrupt bit,
external data file, extended L2 entries).
Feature names are defined as follows:
1. The image's feature name table header extension (if present)
2. Hardcoded fallback names for known features
3. Generic "unknown feature bit N" for undefined features
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
Co-developed-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
2026-01-23 18:58:56 +00:00
Anatol Belski
eaafe426a6
tests: qcow: Add unit test for zero bit helpers
...
Add test for l2_entry_is_zero() and related helper functions.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2026-01-22 19:28:05 +00:00
Anatol Belski
13198777dd
block: qcow: Add support for zero bit in standard L2 clusters
...
Implement read support for bit 0 in QCOW2 L2 table entries.
When this flag is set, the cluster reads as zeros without accessing
disk. This improves compatibility with QCOW2 images that use this
optimization.
According to the QCOW2 specification, bit 0 of the standard cluster
descriptor indicates that the cluster reads as zeros. Unlike
l2_entry == 0 indicating a completely unallocated entry, bit 0 can
be set on an allocated cluster.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2026-01-22 19:28:05 +00:00
Anatol Belski
3fed706d6a
block: qcow: Fix v3 header writing and add extension tests
...
The write_to() function is used by test code to create qcow2 files for
testing. For v3 headers with extended header_size (>104), it needs to:
1. Write the mandatory compression_type field at bytes 104-111
2. Write the header extension end marker at the header_size offset
3. Seek to backing_file_offset before writing the backing file path
Additionally, create_for_size_and_path() must set backing_file_offset
to account for the 8 byte extension end marker in v3 files, so the
backing file path doesn't overwrite the extension area.
Add unit tests for read_header_extensions() covering backing format
parsing (raw/qcow2), unknown extensions, and error cases (invalid
formats, invalid UTF-8). These tests depend on the header writing fixes
to create properly formatted v3 test files.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2026-01-15 16:19:15 +00:00
Anatol Belski
9eb2b9b0e5
block: qcow: Implement extension parsing for QCOW v3
...
Add support for parsing QCOW v3 header extensions to read the
backing file format. The QCOW v3 spec allows optional header
extensions between the fixed header and the backing file name.
Implement read_header_extensions() to parse the extension area,
which starts at the header_size offset. At the moment it is
used to read the backing file format. Further extension
processing is open in folow up implementations.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2026-01-15 16:19:15 +00:00
Anatol Belski
b3922dbd2c
block: qcow: Add raw backing file support
...
Add support for raw backing files in addition to qcow2 backing
files. This enables QCOW2 overlays to use raw images as their
backing store.
The backing file format is auto-detected when not specified,
using the existing detect_image_type() function.
Add backing_file_format field to QcowHeader to store the format
type, which will be populated from header extensions by a
subsequent patch.
Modify new_from_backing() to accept a backing_format parameter,
consolidating support for both raw and qcow2 backing files in a
single function. The backing_file_size parameter allows overlay
creation without opening the backing file multiple times.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2026-01-15 16:19:15 +00:00
dependabot[bot]
c19ee037a2
build: Bump the non-rust-vmm group across 2 directories with 14 updates
...
Bumps the non-rust-vmm group with 7 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [libc](https://github.com/rust-lang/libc ) | `0.2.179` | `0.2.180` |
| [flate2](https://github.com/rust-lang/flate2-rs ) | `1.1.5` | `1.1.8` |
| [zbus](https://github.com/z-galaxy/zbus ) | `5.12.0` | `5.13.1` |
| [cc](https://github.com/rust-lang/cc-rs ) | `1.2.51` | `1.2.52` |
| [clap_lex](https://github.com/clap-rs/clap ) | `0.7.6` | `0.7.7` |
| [rand_core](https://github.com/rust-random/rand ) | `0.9.3` | `0.9.4` |
| [zmij](https://github.com/dtolnay/zmij ) | `1.0.12` | `1.0.13` |
Bumps the non-rust-vmm group with 7 updates in the /fuzz directory:
| Package | From | To |
| --- | --- | --- |
| [libc](https://github.com/rust-lang/libc ) | `0.2.179` | `0.2.180` |
| [flate2](https://github.com/rust-lang/flate2-rs ) | `1.1.5` | `1.1.8` |
| [getrandom](https://github.com/rust-random/getrandom ) | `0.2.16` | `0.2.17` |
| [cc](https://github.com/rust-lang/cc-rs ) | `1.2.51` | `1.2.52` |
| [clap_lex](https://github.com/clap-rs/clap ) | `0.7.6` | `0.7.7` |
| [rand_core](https://github.com/rust-random/rand ) | `0.9.3` | `0.9.4` |
| [zmij](https://github.com/dtolnay/zmij ) | `1.0.12` | `1.0.13` |
Updates `libc` from 0.2.179 to 0.2.180
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.180/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.179...0.2.180 )
Updates `flate2` from 1.1.5 to 1.1.8
- [Release notes](https://github.com/rust-lang/flate2-rs/releases )
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.1.5...1.1.8 )
Updates `zbus` from 5.12.0 to 5.13.1
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus-5.12.0...zbus-5.13.1 )
Updates `cc` from 1.2.51 to 1.2.52
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.51...cc-v1.2.52 )
Updates `clap_lex` from 0.7.6 to 0.7.7
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/clap_lex-v0.7.6...clap_lex-v0.7.7 )
Updates `find-msvc-tools` from 0.1.6 to 0.1.7
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/find-msvc-tools-v0.1.6...find-msvc-tools-v0.1.7 )
Updates `rand_core` from 0.9.3 to 0.9.4
- [Release notes](https://github.com/rust-random/rand/releases )
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/rand/commits )
Updates `zbus_macros` from 5.12.0 to 5.13.1
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus-5.12.0...zbus_macros-5.13.1 )
Updates `zbus_names` from 4.2.0 to 4.3.1
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus_names-4.2.0...zbus_names-4.3.1 )
Updates `zmij` from 1.0.12 to 1.0.13
- [Release notes](https://github.com/dtolnay/zmij/releases )
- [Commits](https://github.com/dtolnay/zmij/compare/1.0.12...1.0.13 )
Updates `zvariant` from 5.8.0 to 5.9.1
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zvariant-5.8.0...zvariant-5.9.1 )
Updates `zvariant_derive` from 5.8.0 to 5.9.1
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus-5.8.0...zvariant_derive-5.9.1 )
Updates `zvariant_utils` from 3.2.1 to 3.3.0
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml )
- [Commits](https://github.com/z-galaxy/zbus/compare/zvariant-3.2.1...zvariant_utils-3.3.0 )
Updates `libc` from 0.2.179 to 0.2.180
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Changelog](https://github.com/rust-lang/libc/blob/0.2.180/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.179...0.2.180 )
Updates `flate2` from 1.1.5 to 1.1.8
- [Release notes](https://github.com/rust-lang/flate2-rs/releases )
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.1.5...1.1.8 )
Updates `getrandom` from 0.2.16 to 0.2.17
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/getrandom/compare/v0.2.16...v0.2.17 )
Updates `cc` from 1.2.51 to 1.2.52
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.51...cc-v1.2.52 )
Updates `clap_lex` from 0.7.6 to 0.7.7
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/clap_lex-v0.7.6...clap_lex-v0.7.7 )
Updates `find-msvc-tools` from 0.1.6 to 0.1.7
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/find-msvc-tools-v0.1.6...find-msvc-tools-v0.1.7 )
Updates `rand_core` from 0.9.3 to 0.9.4
- [Release notes](https://github.com/rust-random/rand/releases )
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/rand/commits )
Updates `zmij` from 1.0.12 to 1.0.13
- [Release notes](https://github.com/dtolnay/zmij/releases )
- [Commits](https://github.com/dtolnay/zmij/compare/1.0.12...1.0.13 )
---
updated-dependencies:
- dependency-name: libc
dependency-version: 0.2.180
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: flate2
dependency-version: 1.1.8
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zbus
dependency-version: 5.13.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: cc
dependency-version: 1.2.52
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: clap_lex
dependency-version: 0.7.7
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: find-msvc-tools
dependency-version: 0.1.7
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: rand_core
dependency-version: 0.9.4
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zbus_macros
dependency-version: 5.13.1
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zbus_names
dependency-version: 4.3.1
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zmij
dependency-version: 1.0.13
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zvariant
dependency-version: 5.9.1
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zvariant_derive
dependency-version: 5.9.1
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zvariant_utils
dependency-version: 3.3.0
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: libc
dependency-version: 0.2.180
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: flate2
dependency-version: 1.1.8
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: getrandom
dependency-version: 0.2.17
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: cc
dependency-version: 1.2.52
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: clap_lex
dependency-version: 0.7.7
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: find-msvc-tools
dependency-version: 0.1.7
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: rand_core
dependency-version: 0.9.4
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zmij
dependency-version: 1.0.13
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-01-13 05:09:15 +00:00
Thomas Prescher
aac240d076
block: raw_async: implement disk resizing
...
Support for resize events for raw_async disks.
On-behalf-of: SAP thomas.prescher@sap.com
Signed-off-by: Thomas Prescher <thomas.prescher@cyberus-technology.de >
2025-12-17 13:54:52 +00:00
Thomas Prescher
37d71fa038
vmm: disk resize infrastructure
...
Add basic infrastructure so resize events are
propagated to the underlying disk implementation.
On-behalf-of: SAP thomas.prescher@sap.com
Signed-off-by: Thomas Prescher <thomas.prescher@cyberus-technology.de >
2025-12-17 13:54:52 +00:00
Philipp Schuster
603b5e862c
block: add DiskFile::physical_size()
...
This is a pre-requisite for the bug fix in the following commit.
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-12-14 17:02:36 +00:00
Philipp Schuster
53092359b4
block: rename DiskFile::size() -> DiskFile::logical_size()
...
This better reflects the actual usage.
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-12-14 17:02:36 +00:00
Anatol Belski
5c5f33050c
block: qcow: Refactor pointer table writes to use iterators
...
Refactor write_pointer_table to accept iterators instead of requiring
materialized vectors, eliminating temporary allocations in L1 table
sync operations.
Changes:
- Modified write_pointer_table() to take Iterator<Item = &T> and
dereference internally before passing owned values to the callback
- Added write_pointer_table_direct() convenience wrapper for cases
without value transformation
- Updated sync_caches() to use l1_table.iter() directly instead of
.get_values().iter().copied()
- Implemented Deref<Target = [T]> for VecCache to enable direct .iter()
Performance impact:
- Eliminates L1 table allocation during sync (~2KB per 100GB disk)
- L2 and refcount table writes already used slices, no change there
- Zero performance overhead: iterator dereferencing is equivalent to
.copied() and optimizes identically
The L1 sync previously collected entries into a Vec to apply the
OFLAG_COPIED flag. The new iterator+callback pattern computes this
on-the-fly, avoiding the allocation entirely.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2025-12-10 23:35:46 +00:00
Anatol Belski
be5b14ef3a
block: qcow: Implement Deref for VecCache
...
Add Deref<Target = [T]> implementation for VecCache<T> to allow direct
slice operations without explicitly calling get_values(). This enables
cleaner code patterns like cache.iter() instead
of cache.get_values().iter().
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2025-12-10 23:35:46 +00:00
Connor Brewster
41a8dcd9ba
block: allow VIRTIO_BLK_T_GET_ID for read-only devices
...
https://github.com/cloud-hypervisor/cloud-hypervisor/pull/7294 adjusted
the checks for read-only requests made to virtio-blk devices and started
rejecting VIRTIO_BLK_T_GET_ID requests. These requests do not perform
any writes and are needed in order to access device serials from within
the guest.
Signed-off-by: Connor Brewster <cbrewster@hey.com >
2025-12-09 16:22:46 +00:00
Anatol Belski
562af123d5
block: qcow: Add missing flush in write_refcount_block
...
The BufWriter must be flushed explicitly to handle errors
properly. Without explicit flush, errors during the implicit
drop flush are ignored.
This is the same issue fixed for write_pointer_table
in commit 85556951a .
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2025-12-09 14:51:54 +00:00
Anatol Belski
c940f6642f
block: qcow: Refactor refcount update into helper method
...
Add set_cluster_refcount_track_freed() helper to consolidate the
common pattern of setting a cluster refcount and tracking freed
refblocks. This reduces code duplication and improves readability.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2025-12-06 17:10:48 +00:00
Anatol Belski
f1ffd795e0
block: qcow: tests: Update combo_write_read for cluster leak fixes
...
Freed clusters correctly have refcount=0. Remove the assertion that
expected no clusters with zero refcount, as it was validating the
buggy behavior.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2025-12-05 15:38:55 +00:00
Anatol Belski
efad6578d1
block: qcow: Fix refcount leak when converting compressed clusters
...
When converting a compressed cluster to standard during write
operations, the old compressed cluster's refcount was never
decremented, causing leak warnings by `qemu-img check ..`
`Leaked cluster X refcount=N reference=M`
Additionally, compressed data can span multiple physical clusters,
not just one. The compressed cluster address and size are encoded
in the L2 entry, and the data may cross cluster boundaries.
The proper handling is implemented as follows:
- Extract compressed cluster address and size before overwriting
L2 entry
- Identify all clusters occupied by the compressed data
- Decrement refcount for each cluster in the range
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2025-12-05 15:38:55 +00:00
Anatol Belski
9e2e85a48f
block: qcow: Fix refcount leak when refcount blocks are replaced
...
When a refcount block is evicted from cache and replaced with a new
one, the old refcount block cluster was added to unref_clusters but
its refcount was never decremented to 0 on disk. This left the cluster
with refcount=1 while no metadata referenced it, causing errors in
qemu-img check
`Leaked cluster X refcount=1 reference=0`
This fix recursively calls set_cluster_refcount(freed_cluster, 0) to
properly decrement the freed refcount block's refcount on disk. The
recursion handles cascading replacements where freeing one refcount
block may trigger the replacement of another.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2025-12-05 15:38:55 +00:00
Anatol Belski
6897c2a462
block: qcow: Set OFLAG_COPIED bit in L1 entries for spec compliance
...
The OFLAG_COPIED bit (bit 63) indicates a cluster's refcount is exactly
1 and doesn't need copy-on-write. This bit must be set in L1 entries
when their referenced L2 clusters have refcount=1.
Previously, L1 entries were always written as raw addresses without the
OFLAG_COPIED bit, violating the QCOW2 specification and causing qemu-img
check to report errors like
`ERROR OFLAG_COPIED L2 cluster: l1_index=X .... refcount=1`
The implementation queries each L2 cluster's refcount in sync_caches()
and sets OFLAG_COPIED appropriately when writing the L1 table. This
ensures QCOW2 images are specification compliant and maintain correct
COW semantics to avoid data corruption.
Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com >
2025-12-01 16:45:55 +00:00
Wei Liu
85556951a6
block: qcow2: Flush the buffer explicitly when writing pointer table
...
Previously the code relies on the implicit flush when BufWriter is
dropped. That's not safe.
Per BufWriter's document:
```
It is critical to call flush before BufWriter<W> is dropped. Though
dropping will attempt to flush the contents of the buffer, any errors
that happen in the process of dropping will be ignored. Calling flush
ensures that the buffer is empty and thus dropping will not even attempt
file operations.
```
Signed-off-by: Wei Liu <liuwe@microsoft.com >
2025-11-30 18:39:49 +00:00
Philipp Schuster
6a86c157af
misc: clippy: add needless_pass_by_value (partially)
...
This helps to uncover expensive and needless clones in the code base.
For example, I prevented extensive clones in the snapshot path where
(nested) BTreeMap's have been cloned over and over again. Further,
the lint helps devs to much better reason about the ownership of
parameters.
All of these changes have been done manually with the necessary
caution. A few structs that are cheap to clone are now `copy` so that
this lint won't trigger for them.
I didn't enable the lint so far as it is a massive rabbit hole and
needs much more fixes. Nevertheless, it is very useful.
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-11-25 16:05:46 +00:00
Philipp Schuster
0a07c96d17
misc: clippy: add if_not_else
...
This removes cognitive load when reading if statements.
All changes were applied by clippy via `--fix`.
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-11-25 16:05:46 +00:00
dependabot[bot]
4e93f85ab1
build: Bump the non-rust-vmm group across 2 directories with 38 updates
...
Bumps the non-rust-vmm group with 28 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [zbus](https://github.com/z-galaxy/zbus ) | `5.11.0` | `5.12.0` |
| [serde_with](https://github.com/jonasbb/serde_with ) | `3.15.0` | `3.16.0` |
| [bitflags](https://github.com/bitflags/bitflags ) | `2.9.4` | `2.10.0` |
| [cfg-if](https://github.com/rust-lang/cfg-if ) | `1.0.3` | `1.0.4` |
| [clap](https://github.com/clap-rs/clap ) | `4.5.49` | `4.5.53` |
| [zerocopy](https://github.com/google/zerocopy ) | `0.8.27` | `0.8.30` |
| [io-uring](https://github.com/tokio-rs/io-uring ) | `0.7.10` | `0.7.11` |
| [num_enum](https://github.com/illicitonion/num_enum ) | `0.7.4` | `0.7.5` |
| [getrandom](https://github.com/rust-random/getrandom ) | `0.3.3` | `0.3.4` |
| [landlock](https://github.com/landlock-lsm/rust-landlock ) | `0.4.3` | `0.4.4` |
| [aho-corasick](https://github.com/BurntSushi/aho-corasick ) | `1.1.3` | `1.1.4` |
| [anstyle-query](https://github.com/rust-cli/anstyle ) | `1.1.4` | `1.1.5` |
| [anstyle-wincon](https://github.com/rust-cli/anstyle ) | `3.0.10` | `3.0.11` |
| [cc](https://github.com/rust-lang/cc-rs ) | `1.2.41` | `1.2.47` |
| [hashbrown](https://github.com/rust-lang/hashbrown ) | `0.16.0` | `0.16.1` |
| [indexmap](https://github.com/indexmap-rs/indexmap ) | `2.11.4` | `2.12.1` |
| [is_terminal_polyfill](https://github.com/polyfill-rs/is_terminal_polyfill ) | `1.70.1` | `1.70.2` |
| [jiff](https://github.com/BurntSushi/jiff ) | `0.2.15` | `0.2.16` |
| [libz-sys](https://github.com/rust-lang/libz-sys ) | `1.1.22` | `1.1.23` |
| [once_cell_polyfill](https://github.com/polyfill-rs/once_cell_polyfill ) | `1.70.1` | `1.70.2` |
| [openssl-src](https://github.com/alexcrichton/openssl-src-rs ) | `300.5.3+3.5.4` | `300.5.4+3.5.4` |
| [openssl-sys](https://github.com/rust-openssl/rust-openssl ) | `0.9.109` | `0.9.111` |
| [proc-macro2](https://github.com/dtolnay/proc-macro2 ) | `1.0.101` | `1.0.103` |
| [quote](https://github.com/dtolnay/quote ) | `1.0.41` | `1.0.42` |
| [signal-hook-registry](https://github.com/vorner/signal-hook ) | `1.4.6` | `1.4.7` |
| [syn](https://github.com/dtolnay/syn ) | `2.0.106` | `2.0.111` |
| [unicode-ident](https://github.com/dtolnay/unicode-ident ) | `1.0.19` | `1.0.22` |
| [zvariant](https://github.com/dbus2/zbus ) | `5.7.0` | `5.8.0` |
Bumps the non-rust-vmm group with 20 updates in the /fuzz directory:
| Package | From | To |
| --- | --- | --- |
| [serde_with](https://github.com/jonasbb/serde_with ) | `3.15.0` | `3.16.0` |
| [bitflags](https://github.com/bitflags/bitflags ) | `2.9.4` | `2.10.0` |
| [cfg-if](https://github.com/rust-lang/cfg-if ) | `1.0.3` | `1.0.4` |
| [clap](https://github.com/clap-rs/clap ) | `4.5.49` | `4.5.53` |
| [zerocopy](https://github.com/google/zerocopy ) | `0.8.27` | `0.8.30` |
| [num_enum](https://github.com/illicitonion/num_enum ) | `0.7.4` | `0.7.5` |
| [landlock](https://github.com/landlock-lsm/rust-landlock ) | `0.4.3` | `0.4.4` |
| [anstyle-query](https://github.com/rust-cli/anstyle ) | `1.1.4` | `1.1.5` |
| [anstyle-wincon](https://github.com/rust-cli/anstyle ) | `3.0.10` | `3.0.11` |
| [cc](https://github.com/rust-lang/cc-rs ) | `1.2.41` | `1.2.47` |
| [hashbrown](https://github.com/rust-lang/hashbrown ) | `0.16.0` | `0.16.1` |
| [indexmap](https://github.com/indexmap-rs/indexmap ) | `2.11.4` | `2.12.1` |
| [is_terminal_polyfill](https://github.com/polyfill-rs/is_terminal_polyfill ) | `1.70.1` | `1.70.2` |
| [once_cell_polyfill](https://github.com/polyfill-rs/once_cell_polyfill ) | `1.70.1` | `1.70.2` |
| [proc-macro2](https://github.com/dtolnay/proc-macro2 ) | `1.0.101` | `1.0.103` |
| [quote](https://github.com/dtolnay/quote ) | `1.0.41` | `1.0.42` |
| [signal-hook-registry](https://github.com/vorner/signal-hook ) | `1.4.6` | `1.4.7` |
| [syn](https://github.com/dtolnay/syn ) | `2.0.106` | `2.0.111` |
| [unicode-ident](https://github.com/dtolnay/unicode-ident ) | `1.0.19` | `1.0.22` |
| [windows-sys](https://github.com/microsoft/windows-rs ) | `0.60.2` | `0.61.2` |
Updates `zbus` from 5.11.0 to 5.12.0
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus-5.11.0...zbus-5.12.0 )
Updates `serde_with` from 3.15.0 to 3.16.0
- [Release notes](https://github.com/jonasbb/serde_with/releases )
- [Commits](https://github.com/jonasbb/serde_with/compare/v3.15.0...v3.16.0 )
Updates `bitflags` from 2.9.4 to 2.10.0
- [Release notes](https://github.com/bitflags/bitflags/releases )
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md )
- [Commits](https://github.com/bitflags/bitflags/compare/2.9.4...2.10.0 )
Updates `cfg-if` from 1.0.3 to 1.0.4
- [Release notes](https://github.com/rust-lang/cfg-if/releases )
- [Changelog](https://github.com/rust-lang/cfg-if/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cfg-if/compare/v1.0.3...v1.0.4 )
Updates `clap` from 4.5.49 to 4.5.53
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.49...clap_complete-v4.5.53 )
Updates `zerocopy` from 0.8.27 to 0.8.30
- [Release notes](https://github.com/google/zerocopy/releases )
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md )
- [Commits](https://github.com/google/zerocopy/compare/v0.8.27...v0.8.30 )
Updates `io-uring` from 0.7.10 to 0.7.11
- [Commits](https://github.com/tokio-rs/io-uring/commits/v0.7.11 )
Updates `num_enum` from 0.7.4 to 0.7.5
- [Commits](https://github.com/illicitonion/num_enum/compare/0.7.4...0.7.5 )
Updates `getrandom` from 0.3.3 to 0.3.4
- [Release notes](https://github.com/rust-random/getrandom/releases )
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/getrandom/compare/v0.3.3...v0.3.4 )
Updates `landlock` from 0.4.3 to 0.4.4
- [Release notes](https://github.com/landlock-lsm/rust-landlock/releases )
- [Changelog](https://github.com/landlock-lsm/rust-landlock/blob/main/CHANGELOG.md )
- [Commits](https://github.com/landlock-lsm/rust-landlock/compare/v0.4.3...v0.4.4 )
Updates `aho-corasick` from 1.1.3 to 1.1.4
- [Commits](https://github.com/BurntSushi/aho-corasick/compare/1.1.3...1.1.4 )
Updates `anstyle-query` from 1.1.4 to 1.1.5
- [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-query-v1.1.4...anstyle-query-v1.1.5 )
Updates `anstyle-wincon` from 3.0.10 to 3.0.11
- [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-wincon-v3.0.10...anstyle-wincon-v3.0.11 )
Updates `cc` from 1.2.41 to 1.2.47
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.41...cc-v1.2.47 )
Updates `clap_builder` from 4.5.49 to 4.5.53
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.49...v4.5.53 )
Updates `find-msvc-tools` from 0.1.4 to 0.1.5
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/find-msvc-tools-v0.1.4...find-msvc-tools-v0.1.5 )
Updates `hashbrown` from 0.16.0 to 0.16.1
- [Release notes](https://github.com/rust-lang/hashbrown/releases )
- [Changelog](https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/hashbrown/compare/v0.16.0...v0.16.1 )
Updates `indexmap` from 2.11.4 to 2.12.1
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md )
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.11.4...2.12.1 )
Updates `is_terminal_polyfill` from 1.70.1 to 1.70.2
- [Changelog](https://github.com/polyfill-rs/is_terminal_polyfill/blob/main-v1.70/CHANGELOG.md )
- [Commits](https://github.com/polyfill-rs/is_terminal_polyfill/compare/v1.70.1...v1.70.2 )
Updates `jiff` from 0.2.15 to 0.2.16
- [Release notes](https://github.com/BurntSushi/jiff/releases )
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md )
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.15...jiff-static-0.2.16 )
Updates `jiff-static` from 0.2.15 to 0.2.16
- [Release notes](https://github.com/BurntSushi/jiff/releases )
- [Changelog](https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md )
- [Commits](https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.15...jiff-static-0.2.16 )
Updates `libz-sys` from 1.1.22 to 1.1.23
- [Release notes](https://github.com/rust-lang/libz-sys/releases )
- [Commits](https://github.com/rust-lang/libz-sys/compare/1.1.22...1.1.23 )
Updates `num_enum_derive` from 0.7.4 to 0.7.5
- [Commits](https://github.com/illicitonion/num_enum/compare/0.7.4...0.7.5 )
Updates `once_cell_polyfill` from 1.70.1 to 1.70.2
- [Changelog](https://github.com/polyfill-rs/once_cell_polyfill/blob/v1.70.2/CHANGELOG.md )
- [Commits](https://github.com/polyfill-rs/once_cell_polyfill/compare/v1.70.1...v1.70.2 )
Updates `openssl-src` from 300.5.3+3.5.4 to 300.5.4+3.5.4
- [Release notes](https://github.com/alexcrichton/openssl-src-rs/releases )
- [Commits](https://github.com/alexcrichton/openssl-src-rs/commits )
Updates `openssl-sys` from 0.9.109 to 0.9.111
- [Release notes](https://github.com/rust-openssl/rust-openssl/releases )
- [Commits](https://github.com/rust-openssl/rust-openssl/compare/openssl-sys-v0.9.109...openssl-sys-v0.9.111 )
Updates `proc-macro2` from 1.0.101 to 1.0.103
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.101...1.0.103 )
Updates `quote` from 1.0.41 to 1.0.42
- [Release notes](https://github.com/dtolnay/quote/releases )
- [Commits](https://github.com/dtolnay/quote/compare/1.0.41...1.0.42 )
Updates `serde_with_macros` from 3.15.0 to 3.16.0
- [Release notes](https://github.com/jonasbb/serde_with/releases )
- [Commits](https://github.com/jonasbb/serde_with/compare/v3.15.0...v3.16.0 )
Updates `signal-hook-registry` from 1.4.6 to 1.4.7
- [Changelog](https://github.com/vorner/signal-hook/blob/master/CHANGELOG.md )
- [Commits](https://github.com/vorner/signal-hook/compare/registry-v1.4.6...registry-v1.4.7 )
Updates `syn` from 2.0.106 to 2.0.111
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/2.0.106...2.0.111 )
Updates `unicode-ident` from 1.0.19 to 1.0.22
- [Release notes](https://github.com/dtolnay/unicode-ident/releases )
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.19...1.0.22 )
Updates `zbus_macros` from 5.11.0 to 5.12.0
- [Release notes](https://github.com/z-galaxy/zbus/releases )
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus-5.11.0...zbus-5.12.0 )
Updates `zerocopy-derive` from 0.8.27 to 0.8.30
- [Release notes](https://github.com/google/zerocopy/releases )
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md )
- [Commits](https://github.com/google/zerocopy/compare/v0.8.27...v0.8.30 )
Updates `zvariant` from 5.7.0 to 5.8.0
- [Release notes](https://github.com/dbus2/zbus/releases )
- [Commits](https://github.com/dbus2/zbus/compare/zvariant-5.7.0...zvariant-5.8.0 )
Updates `zvariant_derive` from 5.7.0 to 5.8.0
- [Release notes](https://github.com/dbus2/zbus/releases )
- [Commits](https://github.com/dbus2/zbus/compare/zbus-5.7.0...zbus-5.8.0 )
Updates `serde_with` from 3.15.0 to 3.16.0
- [Release notes](https://github.com/jonasbb/serde_with/releases )
- [Commits](https://github.com/jonasbb/serde_with/compare/v3.15.0...v3.16.0 )
Updates `bitflags` from 2.9.4 to 2.10.0
- [Release notes](https://github.com/bitflags/bitflags/releases )
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md )
- [Commits](https://github.com/bitflags/bitflags/compare/2.9.4...2.10.0 )
Updates `cfg-if` from 1.0.3 to 1.0.4
- [Release notes](https://github.com/rust-lang/cfg-if/releases )
- [Changelog](https://github.com/rust-lang/cfg-if/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cfg-if/compare/v1.0.3...v1.0.4 )
Updates `clap` from 4.5.49 to 4.5.53
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.49...clap_complete-v4.5.53 )
Updates `zerocopy` from 0.8.27 to 0.8.30
- [Release notes](https://github.com/google/zerocopy/releases )
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md )
- [Commits](https://github.com/google/zerocopy/compare/v0.8.27...v0.8.30 )
Updates `bitfield-struct` from 0.11.0 to 0.12.1
- [Release notes](https://github.com/wrenger/bitfield-struct-rs/releases )
- [Commits](https://github.com/wrenger/bitfield-struct-rs/compare/0.11.0...0.12.1 )
Updates `num_enum` from 0.7.4 to 0.7.5
- [Commits](https://github.com/illicitonion/num_enum/compare/0.7.4...0.7.5 )
Updates `landlock` from 0.4.3 to 0.4.4
- [Release notes](https://github.com/landlock-lsm/rust-landlock/releases )
- [Changelog](https://github.com/landlock-lsm/rust-landlock/blob/main/CHANGELOG.md )
- [Commits](https://github.com/landlock-lsm/rust-landlock/compare/v0.4.3...v0.4.4 )
Updates `anstyle-query` from 1.1.4 to 1.1.5
- [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-query-v1.1.4...anstyle-query-v1.1.5 )
Updates `anstyle-wincon` from 3.0.10 to 3.0.11
- [Commits](https://github.com/rust-cli/anstyle/compare/anstyle-wincon-v3.0.10...anstyle-wincon-v3.0.11 )
Updates `cc` from 1.2.41 to 1.2.47
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.41...cc-v1.2.47 )
Updates `clap_builder` from 4.5.49 to 4.5.53
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/v4.5.49...v4.5.53 )
Updates `find-msvc-tools` from 0.1.4 to 0.1.5
- [Release notes](https://github.com/rust-lang/cc-rs/releases )
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/cc-rs/compare/find-msvc-tools-v0.1.4...find-msvc-tools-v0.1.5 )
Updates `hashbrown` from 0.16.0 to 0.16.1
- [Release notes](https://github.com/rust-lang/hashbrown/releases )
- [Changelog](https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/hashbrown/compare/v0.16.0...v0.16.1 )
Updates `indexmap` from 2.11.4 to 2.12.1
- [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md )
- [Commits](https://github.com/indexmap-rs/indexmap/compare/2.11.4...2.12.1 )
Updates `is_terminal_polyfill` from 1.70.1 to 1.70.2
- [Changelog](https://github.com/polyfill-rs/is_terminal_polyfill/blob/main-v1.70/CHANGELOG.md )
- [Commits](https://github.com/polyfill-rs/is_terminal_polyfill/compare/v1.70.1...v1.70.2 )
Updates `num_enum_derive` from 0.7.4 to 0.7.5
- [Commits](https://github.com/illicitonion/num_enum/compare/0.7.4...0.7.5 )
Updates `once_cell_polyfill` from 1.70.1 to 1.70.2
- [Changelog](https://github.com/polyfill-rs/once_cell_polyfill/blob/v1.70.2/CHANGELOG.md )
- [Commits](https://github.com/polyfill-rs/once_cell_polyfill/compare/v1.70.1...v1.70.2 )
Updates `proc-macro2` from 1.0.101 to 1.0.103
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.101...1.0.103 )
Updates `quote` from 1.0.41 to 1.0.42
- [Release notes](https://github.com/dtolnay/quote/releases )
- [Commits](https://github.com/dtolnay/quote/compare/1.0.41...1.0.42 )
Updates `serde_with_macros` from 3.15.0 to 3.16.0
- [Release notes](https://github.com/jonasbb/serde_with/releases )
- [Commits](https://github.com/jonasbb/serde_with/compare/v3.15.0...v3.16.0 )
Updates `signal-hook-registry` from 1.4.6 to 1.4.7
- [Changelog](https://github.com/vorner/signal-hook/blob/master/CHANGELOG.md )
- [Commits](https://github.com/vorner/signal-hook/compare/registry-v1.4.6...registry-v1.4.7 )
Updates `syn` from 2.0.106 to 2.0.111
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/2.0.106...2.0.111 )
Updates `unicode-ident` from 1.0.19 to 1.0.22
- [Release notes](https://github.com/dtolnay/unicode-ident/releases )
- [Commits](https://github.com/dtolnay/unicode-ident/compare/1.0.19...1.0.22 )
Updates `windows-sys` from 0.60.2 to 0.61.2
- [Release notes](https://github.com/microsoft/windows-rs/releases )
- [Commits](https://github.com/microsoft/windows-rs/commits )
Updates `zerocopy-derive` from 0.8.27 to 0.8.30
- [Release notes](https://github.com/google/zerocopy/releases )
- [Changelog](https://github.com/google/zerocopy/blob/main/CHANGELOG.md )
- [Commits](https://github.com/google/zerocopy/compare/v0.8.27...v0.8.30 )
---
updated-dependencies:
- dependency-name: zbus
dependency-version: 5.12.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: serde_with
dependency-version: 3.16.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: bitflags
dependency-version: 2.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: cfg-if
dependency-version: 1.0.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: clap
dependency-version: 4.5.53
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zerocopy
dependency-version: 0.8.30
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: io-uring
dependency-version: 0.7.11
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: num_enum
dependency-version: 0.7.5
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: getrandom
dependency-version: 0.3.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: landlock
dependency-version: 0.4.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: aho-corasick
dependency-version: 1.1.4
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: anstyle-query
dependency-version: 1.1.5
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: anstyle-wincon
dependency-version: 3.0.11
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: cc
dependency-version: 1.2.47
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: clap_builder
dependency-version: 4.5.53
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: find-msvc-tools
dependency-version: 0.1.5
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: hashbrown
dependency-version: 0.16.1
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: indexmap
dependency-version: 2.12.1
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: is_terminal_polyfill
dependency-version: 1.70.2
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: jiff
dependency-version: 0.2.16
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: jiff-static
dependency-version: 0.2.16
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: libz-sys
dependency-version: 1.1.23
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: num_enum_derive
dependency-version: 0.7.5
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: once_cell_polyfill
dependency-version: 1.70.2
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: openssl-src
dependency-version: 300.5.4+3.5.4
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: openssl-sys
dependency-version: 0.9.111
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: proc-macro2
dependency-version: 1.0.103
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: quote
dependency-version: 1.0.42
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: serde_with_macros
dependency-version: 3.16.0
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: signal-hook-registry
dependency-version: 1.4.7
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: syn
dependency-version: 2.0.111
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: unicode-ident
dependency-version: 1.0.22
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zbus_macros
dependency-version: 5.12.0
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zerocopy-derive
dependency-version: 0.8.30
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zvariant
dependency-version: 5.8.0
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zvariant_derive
dependency-version: 5.8.0
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: serde_with
dependency-version: 3.16.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: bitflags
dependency-version: 2.10.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: cfg-if
dependency-version: 1.0.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: clap
dependency-version: 4.5.53
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: zerocopy
dependency-version: 0.8.30
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: bitfield-struct
dependency-version: 0.12.1
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: num_enum
dependency-version: 0.7.5
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: landlock
dependency-version: 0.4.4
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: anstyle-query
dependency-version: 1.1.5
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: anstyle-wincon
dependency-version: 3.0.11
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: cc
dependency-version: 1.2.47
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: clap_builder
dependency-version: 4.5.53
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: find-msvc-tools
dependency-version: 0.1.5
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: hashbrown
dependency-version: 0.16.1
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: indexmap
dependency-version: 2.12.1
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: is_terminal_polyfill
dependency-version: 1.70.2
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: num_enum_derive
dependency-version: 0.7.5
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: once_cell_polyfill
dependency-version: 1.70.2
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: proc-macro2
dependency-version: 1.0.103
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: quote
dependency-version: 1.0.42
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: serde_with_macros
dependency-version: 3.16.0
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: signal-hook-registry
dependency-version: 1.4.7
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: syn
dependency-version: 2.0.111
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: unicode-ident
dependency-version: 1.0.22
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
- dependency-name: windows-sys
dependency-version: 0.61.2
dependency-type: indirect
update-type: version-update:semver-minor
dependency-group: non-rust-vmm
- dependency-name: zerocopy-derive
dependency-version: 0.8.30
dependency-type: indirect
update-type: version-update:semver-patch
dependency-group: non-rust-vmm
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-25 11:12:36 +00:00
Philipp Schuster
5f66a26b2e
misc: block: drop extern crate, use modern rust
...
This commit is part of a series of similar commits.
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-11-24 22:36:46 +00:00
Eugene Korenevsky
aa67250049
block: qcow: support compressed clusters (zlib, zstd)
...
Add support of reading and writing compressed clusters.
Support zlib and zstd compressions.
L2 cache: store entire L2 entries, not only standard cluster addresses.
Read path. Offsets of compressed clusters cannot be determined,
therefore replace QcowFile.file_offset_read() with QcowFile.file_read().
This method reads the cluster, decompresses it if necessary and returns
the data to the caller.
Write path. QcowFile.file_offset_write(): since writing to compressed
clusters is not generally possible, allocate a new standard
(non-compressed) cluster if compressed L2 entry is encountered; then
decompress compressed cluster into new cluster; then return offset
inside new cluster to the caller. Processing of standard clusters is
not changed.
Signed-off-by: Eugene Korenevsky <ekorenevsky@aliyun.com >
2025-11-24 08:52:13 +00:00
Philipp Schuster
f5d2973546
block: advisory locks: use byte-range locks to match QEMU behavior
...
The granularity has significant implications in typical cloud
deployments with network storage. The Linux kernel will sync advisory
locks to network file systems, but these backends may have different
policies and handle locks differently. For example, Netapp speaks a NFS
API but will treat advisory OFD locks for the whole file as mandatory
locks, whereas byte-range locks for the whole file will remain
advisory [0].
As it is a valid use case to prevent multiple CHV instances from
accessing the same disk but disk management software (e.g., Cinder in
OpenStack) should be able to snapshot disks while VMs are running, we
need special control over the lock granularity. Therefore, it is a valid
use case to lock the whole byte range of a disk image without
technically locking the whole file - to get the best of both worlds.
This also brings CHVs behavior in line with QEMU [1].
Whole-file locks remain a valid use case and could be supported later.
This patch only provides the necessary groundwork; making it
configurable is out of scope for now.
[0] https://kb.netapp.com/on-prem/ontap/da/NAS/NAS-KBs/How_is_Mandatory_Locking_supported_for_NFSv4_on_ONTAP_9
[1] <qemu>/util/osdep.c::qemu_lock_fcntl()
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-11-22 10:38:38 +00:00
Demi Marie Obenour
2be304b392
misc: Check that get_slice() returned a big enough slice
...
This should be guaranteed by GuestMemory and GuestMemoryRegion, but
those traits are currently safe, so add checks to guard against
incorrect implementations of them.
Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com >
2025-11-22 10:24:13 +00:00
Philipp Schuster
b4c62bf159
misc: clippy: add semicolon_if_nothing_returned
...
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-11-21 09:32:11 +00:00
Philipp Schuster
ea4f07d3bf
misc: clippy: add uninlined_format_args
...
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-11-21 09:32:11 +00:00
Philipp Schuster
7cb73e9e56
misc: clippy: add unnecessary_semicolon
...
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-11-21 09:32:11 +00:00
Philipp Schuster
d1680b9ff9
tests: streamline module names to unit_tests
...
This better aligns with the rest of the code and makes it clearer
that these tests can run "as is" in a normal hosted environments
without the special test environment.
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-11-20 21:15:03 +00:00
Philipp Schuster
e4fd066d82
misc: improve developer experience of cargo clippy
...
A major improvement to the developer experience of clippy in
Cloud Hypervisor.
1. Make `cargo clippy` just work with the same lints we use in CI
2. Simplify adding new lints
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-11-17 16:59:49 +00:00
Eugene Korenevsky
3791062b23
block: qcow: refactor: extract method cache_l2_cluster()
...
There are several copy-pasted code fragments in impl QcowFile. All of
them add L2 entry to the cache and one of them (in file_offset_write())
does also allocating new L2 entry if necessary.
Fold all these code fragments (except of one in l2_table() which does
error handling in special way) into cache_l2_cluster() method without
changing the logic.
This will make the code more compact and clean.
Signed-off-by: Eugene Korenevsky <ekorenevsky@aliyun.com >
2025-11-05 16:58:24 +00:00
Philipp Schuster
7536a95424
misc: cleanup &Arc<dyn T> -> &dyn T
...
Consuming `&Arc<T>` as argument is almost always an antipattern as it
hides whether the callee is going to take over (shared) ownership
(by .clone()) or not. Instead, it is better to consume `&dyn T` or
`Arc<dyn T>` to be more explicit. This commit cleans up the code.
The change is very mechanic and was very easy to implement across the
code base.
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-10-28 17:37:49 +00:00
Philipp Schuster
f1206a19df
block: fix error style
...
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-09-25 21:17:06 +00:00
Ruoqing He
f2dfa7f6e0
misc: Use variables directly in format! string
...
Fix clippy warning `uninlined_format_args` reported by rustc rustc
1.89.0 (29483883e 2025-08-04).
```console
warning: variables can be used directly in the `format!` string
--> block/src/lib.rs:649:17
|
649 | info!("{} failed to create io_uring instance: {}", error_msg, e);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
= note: `#[warn(clippy::uninlined_format_args)]` on by default
help: change this to
|
649 - info!("{} failed to create io_uring instance: {}", error_msg, e);
649 + info!("{error_msg} failed to create io_uring instance: {e}");
|
```
Signed-off-by: Ruoqing He <heruoqing@iscas.ac.cn >
2025-09-24 02:28:12 +00:00
Philipp Schuster
c995b72384
build: treewide: clippy: collapse nested ifs, use let chains
...
This bumps the MSRV to 1.88 (also, Rust edition 2024 is mandatory).
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-09-10 18:35:38 +00:00
Philipp Schuster
363273111a
build: treewide: fmt for edition 2024
...
`cargo +nightly fmt`
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-09-10 18:35:38 +00:00
Philipp Schuster
061351d82d
build: upgrade whole* workspace to Rust edition 2024
...
This upgrades the Cargo workspace to Rust edition 2024 to keep the
code base clean and up to date.
The commit only contains the adjustments to the Cargo.toml files and
basic compiler error fixes. Also, this commit includes new SAFETY
comments as discussed in [1]. The changes were not automatically
fixed by `cargo fix --edition` but needed manual adjustments.
Apart from that, all formatting and clippy adjustments follow in
subsequent commits.
*
As only exception, workspace member net_gen sticks to edition 2021
for now as discussed in [0].
[0] https://github.com/cloud-hypervisor/cloud-hypervisor/pull/7295#discussion_r2310851041
[1] https://github.com/cloud-hypervisor/cloud-hypervisor/pull/7256#issuecomment-3271888674
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de >
On-behalf-of: SAP philipp.schuster@sap.com
2025-09-10 18:35:38 +00:00
dependabot[bot]
f7f79642ab
build: Bump io-uring from 0.6.4 to 0.7.10
...
Bumps [io-uring](https://github.com/tokio-rs/io-uring ) from 0.6.4 to 0.7.10.
- [Commits](https://github.com/tokio-rs/io-uring/commits )
---
updated-dependencies:
- dependency-name: io-uring
dependency-version: 0.7.10
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-04 16:49:07 +00:00
Muminul Islam
a9d6807522
block: batch submit requests for fixed VHD
...
Updated VHD async implementation to call the batch submit
method via the raw async IO layer.
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2025-09-02 16:29:25 +00:00
Muminul Islam
c4bab33020
block: Enable request submission in batch when using io_uring
...
Implement the batch submission function for raw disk, default it is
enabled. After parsing the requests this method is
called for better IO latency and bandwidth.
Signed-off-by: Bo Chen <bchen@crusoe.ai >
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2025-09-02 16:29:25 +00:00
Muminul Islam
245bce23fa
block, virtio-devices: Support request submission in batch
...
Cache and batch IO requests after parsing all
items in the queue, improving performance—especially
for small block sizes—by reducing per-request overhead.
Introduced two methods in the AsyncIo trait for batch
submission, with implementation in the raw disk backend.
This method should be called during/after parsing all block IO requests
in the available queue. If the batch submission is not enabled, by
default it does the old way of submitting requests.
Signed-off-by: Bo Chen <bchen@crusoe.ai >
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2025-09-02 16:29:25 +00:00
Muminul Islam
67ab81874a
block: virtio-devices: block: Clarify the return of execute_async()
...
Instead of returning boolean return an struct of completion status
so that it can be cached for batch submission.
Signed-off-by: Bo Chen <bchen@crusoe.ai >
Signed-off-by: Muminul Islam <muislam@microsoft.com >
2025-09-02 16:29:25 +00:00
Songqian Li
92370e8ff1
block: Using feature bits to check the read-only flag
...
This patch changes the read-only check using acked features bit, which
will help to check more features.
Signed-off-by: Songqian Li <sionli@tencent.com >
2025-08-26 15:45:45 +00:00
dependabot[bot]
a132001021
build: Bump smallvec from 1.13.2 to 1.15.1
...
Bumps [smallvec](https://github.com/servo/rust-smallvec ) from 1.13.2 to 1.15.1.
- [Release notes](https://github.com/servo/rust-smallvec/releases )
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.13.2...v1.15.1 )
---
updated-dependencies:
- dependency-name: smallvec
dependency-version: 1.15.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-08-16 00:16:43 +00:00
Songqian Li
cd2c43b489
misc: Fix beta clippy errors
...
Fix clippy error: "error: manual implementation of `.is_multiple_of()
`" from rustc 1.90.0-beta.1 (788da80fc 2025-08-04).
Signed-off-by: Songqian Li <sionli@tencent.com >
2025-08-07 16:53:59 +00:00
Oliver Anderson
8c136041cb
build: Use workspace dependencies
...
Many of the workspace members in the Cloud-hypervisor workspace share
common dependencies. Making these workspace dependencies reduces
duplication and improves maintainability.
Signed-off-by: Oliver Anderson <oliver.anderson@cyberus-technology.de >
On-behalf-of: SAP oliver.anderson@sap.com
2025-07-28 20:19:27 +00:00