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 -- 2.44.1