1# Upcoming 2 3# v0.11.0 4 5## Changed 6- Updated vm-memory from 0.13.1 to 0.14.0 7- Updated vmm-sys-util from 0.11.0 to 0.12.1 8 9# v0.10.0 10 11Identical to v0.9.1, which was incorrectly published as minor release. 12 13# v0.9.1 - yanked 14 15This version got yanked. It should have been a major release. The vm-memory 16dependency - which received a major bump - is part of the public interface. 17 18## Changed 19- Updated vm-memory from 0.12.0 to 0.13.1. 20- Updated dev-dependencies: 21 - criterion (0.3.0 -> 0.5.1) 22 - memoffset (0.7.1 -> 0.9.0) 23 24# v0.9.0 25 26## Changed 27- Updated vm-memory from 0.11.0 to 0.12.0. 28 29# v0.8.0 30 31## Changed 32- Terminate iterating descriptor chains that are longer than 2^32 bytes. 33- Updated vm-memory from 0.10.0 to 0.11.0. 34- Updated virtio-bindings from 0.1.0 to 0.2.0. 35 36# v0.7.1 37 38## Fixed 39- Skip indirect descriptor address alignment check, the virtio spec has 40 no alignment requirement on this, see `2.6.5.3 Indirect Descriptors` 41 and `2.7.7 Indirect Flag: Scatter-Gather Support` in virtio 1.0. 42- Update the `add_desc_chains` mock function such that it works on big endian 43 hosts as well. 44- Check that the queue is ready for processing requests when calling the 45 iterator functions. For now the checks are limited to the avail address and 46 the ready fields, but should be extended in the future to account for other 47 fields that could signal an invalid queue. This behavior can be triggered 48 by doing a `reset` followed by a `pop_descriptor_chain`. 49 50# v0.7.0 51 52## Changed 53 54- Updated vmm-sys-util from 0.10.0 to 0.11.0. 55- Updated vm-memory from 0.9.0 to 0.10.0. 56 57# v0.6.1 58 59## Fixed 60- Return an error if the number of available descriptor chains exposed by the 61 driver exceeds the queue size. This way we avoid potential hanging and 62 Denial-of-Service in the VMM, that was possible before by iterating multiple 63 times over the same chains. 64 65# v0.6.0 66 67## Added 68- Derive `Eq` for structures that derive `PartialEq`. 69 70## Changed 71- Use `add_desc_chains` in tests 72- Update dependencies: `vm-memory` from `0.8.0` to `0.9.0` and `log` from `0.4.6` to `0.4.17`. 73- Upgrade to Rust 2021 edition. 74 75# v0.5.0 76 77## Added 78- Added getters and setters for the Virtio Queue fields. 79- Added the `state` method for retrieving the `QueueState` of a `Queue`. 80 81## Fixed 82- Validate the state of the Virtio Queue when restoring from state and return errors on invalid 83 input. 84 85## Removed 86- Removed the wrapper over the Virtio Queue that was wrapping the Guest Memory. VMMs can define 87 this wrapper if needed, but this is no longer provided as part of virtio-queue crate so that the 88 naming scheme can be simplified. As a consequence, a couple of functions now receive the 89 memory as a parameter (more details in the Changed section). 90- Removed `num_added` field from the `QueueState` because this is an implementation detail of 91 the notification suppression feature and thus should not be part of the state. 92- Removed `QueueGuard` and `lock_with_memory`. 93 94## Changed 95- `QueueState` is now renamed to `Queue`. 96- `QueueStateSync` is now renamed to `QueueSync`. 97- The `QueueState` structure now represents the state of the `Queue` without any implementation 98 details. This can be used for implementing save/restore. 99- Initializing a `Queue` now returns an error in case the `max_size` is invalid. 100- The `Queue` fields are now private and can be updated only through the dedicated setters. 101- The following Queue methods now receive the memory as a parameter: `iter`, `is_valid`, 102 `add_used`, `needs_notification`, `enable_notification`, `disable_notification`, `avail_idx`, 103 `used_idx`. 104- Use the constant definition from the `virtio-queue` crate. 105 106# v0.4.0 107 108## Fixed 109- [[#173]](https://github.com/rust-vmm/vm-virtio/pull/173) Fix potential division by zero in 110 iterator when the queue size is 0. 111 112## Changed 113- [[#162]](https://github.com/rust-vmm/vm-virtio/pull/162) Added error handling in the mock 114 interface and the ability to create multiple descriptor chains for testing in order to 115 support running fuzzing. 116- [[#174]](https://github.com/rust-vmm/vm-virtio/pull/174) Updated the `avail_idx` and `used_idx` 117 documentation to specify when these functions panic. 118 119 120# v0.3.0 121 122## Added 123- [[#148]](https://github.com/rust-vmm/vm-virtio/pull/148): `QueueStateOwnedT` trait that stands 124 for queue objects which are exclusively owned and accessed by a single thread of execution. 125- [[#148]](https://github.com/rust-vmm/vm-virtio/pull/148): Added the `pop_descriptor_chain` 126 method, which can be used to consume descriptor chains from the available ring without 127 using an iterator, to `QueueStateT` and `QueueGuard`. Also added `go_to_previous_position()` 128 to `QueueGuard`, which enables decrementing the next available index by one position, which 129 effectively undoes the consumption of a descriptor chain in some use cases. 130- [[#151]](https://github.com/rust-vmm/vm-virtio/pull/151): Added `MockSplitQueue::add_desc_chain()`, 131 which places a descriptor chain at the specified offset in the descriptor table. 132- [[#153]](https://github.com/rust-vmm/vm-virtio/pull/153): Added `QueueStateT::size()` to return 133 the size of the queue. 134 135## Changed 136- The minimum version of the `vm-memory` dependency is now `v0.8.0` 137- [[#161]](https://github.com/rust-vmm/vm-virtio/pull/161): Improve the efficiency of `needs_notification` 138 139## Removed 140- [[#153]](https://github.com/rust-vmm/vm-virtio/pull/153): `#[derive(Clone)]` for `QueueState` 141 142# v0.2.0 143 144## Added 145 146- *Testing Interface*: Added the possibility to initialize a mock descriptor 147 chain from a list of descriptors. 148- Added setters and getters for the queue fields required for extending the 149 `Queue` in VMMs. 150 151## Fixed 152 153- Apply the appropriate endianness conversion on `used_idx`. 154 155# v0.1.0 156 157This is the first release of the crate. 158