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

Vincent Vanlaer posted 5 patches 3 weeks, 6 days ago
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
[PATCH v4 0/5] block: allow commit to unmap zero blocks
Posted by Vincent Vanlaer 3 weeks, 6 days ago
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
Re: [PATCH v4 0/5] block: allow commit to unmap zero blocks
Posted by Vladimir Sementsov-Ogievskiy 5 days, 7 hours ago
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