mbox series

[v4,0/5] block: allow commit to unmap zero blocks

Message ID 20241026163010.2865002-1-libvirt-e6954efa@volkihar.be (mailing list archive)
Headers show
Series block: allow commit to unmap zero blocks | expand

Message

Vincent Vanlaer Oct. 26, 2024, 4:30 p.m. UTC
This patch series adds support for zero blocks in non-active commits.
The first three patches in the series refactor the relevant code, patch
four makes the actual changes, and the last patch adds a test for the
new functionality.

---

Changes since v3:
- minor reformating based on checkpatch.pl
- moved tracepoint in commit_iteration before first possible return on
  error
- renamed the handle_error label in commit_iteration to fail and
  prevented the happy path from passing through this label
- moved test script to the tests/qemu-iotests/tests folder and named it
  commit-zero-blocks

Changes since v2:
- moved main loop of commit_run to a separate function and refactored
  the error handling.
- call blk_co_pwrite_zero even if the size of the zero region does not
  align with the sectors of the base image. This removes the need for
  the CommitMethod enum

Changes since v1:
- split up the implementation in three separate commits
- removed accidentally left over includes from testing

Vincent Vanlaer (5):
  block: get type of block allocation in commit_run
  block: move commit_run loop to separate function
  block: refactor error handling of commit_iteration
  block: allow commit to unmap zero blocks
  block: add test non-active commit with zeroed data

 block/commit.c                                | 116 +++++++++++++-----
 tests/qemu-iotests/tests/commit-zero-blocks   |  96 +++++++++++++++
 .../qemu-iotests/tests/commit-zero-blocks.out |  54 ++++++++
 3 files changed, 232 insertions(+), 34 deletions(-)
 create mode 100755 tests/qemu-iotests/tests/commit-zero-blocks
 create mode 100644 tests/qemu-iotests/tests/commit-zero-blocks.out