feat(virtio-block): Add support for VIRTIO_BLK_T_DISCARD request type #5168
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
(Reupload) Opening this as a Draft PR, as I am still working on fully integrating unmap/fstrim/discard. Right now I'm currently working on the functionality.
Changes
Expose discard feature bit
VIRTIO_BLK_F_DISCARD
to the device’s advertised avail_features so guests can negotiate discard supportExtend RequestType enum
VIRTIO_BLK_T_DISCARD
→RequestType::Discard
in the request conversionUpdate request parsing (Request::parse) in
request.rs
Implement handle_discard backend
handle_discard(offset, len)
to callfallocate()
on the host file descriptorReason
Attempting to resolve Issue #2708
Next Steps
VIRTIO_BLK_F_DISCARD
support (need suggestions for this, not sure of an efficient way to check for Discard Support within a given VirtIO block).License Acceptance
By submitting this pull request, I confirm that my contribution is made under
the terms of the Apache 2.0 license. For more information on following Developer
Certificate of Origin and signing off your commits, please check
CONTRIBUTING.md
.PR Checklist
tools/devtool checkstyle
to verify that the PR passes theautomated style checks.
how they are solving the problem in a clear and encompassing way.
in the PR.
CHANGELOG.md
.Runbook for Firecracker API changes.
integration tests.
TODO
.rust-vmm
.