On 26.10.24 19:30, Vincent Vanlaer wrote:
> 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
>
Thanks, applied to my block branch,
with
diff --git a/block/commit.c b/block/commit.c
index 5c24c8b80a..bfd969b13f 100644
--- a/block/commit.c
+++ b/block/commit.c
@@ -172,7 +172,8 @@ static int commit_iteration(CommitBlockJob *s, int64_t offset,
*requested_bytes = bytes;
return 0;
-fail:;
+
+fail:
BlockErrorAction action = block_job_error_action(&s->common, s->on_error,
error_in_source, -ret);
if (action == BLOCK_ERROR_ACTION_REPORT) {
change to patch 3.
Unfortunately, I've missed soft-freeze on 05.11. Will send PR when 10.0 development phase opens.
--
Best regards,
Vladimir