behlendorf commented on this pull request.
> for (indirect_split_t *is = list_head(&iv->iv_splits);
- is != NULL; is = list_next(&iv->iv_splits, is))
- segments++;
+ is != NULL; is = list_next(&iv->iv_splits, is)) {
+ uint64_t is_copies = 0;
+
+ for (int i = 0; i < is->is_children; i++) {
@sdimitro thanks for taking the time to review this.
> "accurate combinations" is not exactly accurate as the combinations
> themselves are not unique.
Good catch. This appears to be a issue which snuck in when the patch was
reworked. The intent was to calculate unique copies and the original patch did
this by immediately freeing any dulicate `is->is_child[i].ic_data` copies and
setting ` is->is_child[i].ic_data = NULL`.
Subsequently the mechanism was reworked and `is->is_child[j].ic_duplicate` was
added instead because `vdev_indirect_repair()` relied on having non-NULL
`abd_t`'s for repair. In the process it looks like the loop logic wasn't
entirely updated.
What you're proposing sounds like a reasonable way to fix this. I'll see about
implementing the proposed changes in ZoL for @ahrens to add to this PR for
review.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/625#discussion_r182826254
------------------------------------------
openzfs: openzfs-developer
Permalink:
https://openzfs.topicbox.com/groups/developer/discussions/Tf29308eb1ca3d052-M17f065e447a2319f8e495cbd
Delivery options: https://openzfs.topicbox.com/groups