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