aboutsummaryrefslogtreecommitdiff
path: root/tests/zfs-tests/tests/functional/cli_root/zfs_set/canmount_002_pos.ksh
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2022-07-05 23:26:20 +0000
committerGitHub <noreply@github.com>2022-07-05 23:26:20 +0000
commit1ac7d194e5ca31d5284e410a87ad9f9669a7f5b5 (patch)
tree8bca1a44f281c418ab2ef0c5f1432a9ca7a0aa4b /tests/zfs-tests/tests/functional/cli_root/zfs_set/canmount_002_pos.ksh
parent6fca6195cdf3079a6e11444e42d7ce4aca10c6a1 (diff)
downloadsrc-1ac7d194e5ca31d5284e410a87ad9f9669a7f5b5.tar.gz
src-1ac7d194e5ca31d5284e410a87ad9f9669a7f5b5.zip
Avoid memory copies during mirror scrub
Issuing several scrub reads for a block we may use the parent ZIO buffer for one of child ZIOs. If that read complete successfully, then we won't need to copy the data explicitly. If block has only one copy (typical for root vdev, which is also a mirror inside), then we never need to copy -- succeed or fail as-is. Previous code also copied data from buffer of every successfully completed child ZIO, but that just does not make any sense. On healthy N-wide mirror this saves all N+1 (or even more in case of ditto blocks) memory copies for each scrubbed block, allowing CPU to focus mostly on check-summing. For other vdev types it should save one memory copy per block copy at root vdev. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Mark Maybee <mark.maybee@delphix.com> Signed-off-by: Alexander Motin <mav@FreeBSD.org> Sponsored-By: iXsystems, Inc. Closes #13606
Diffstat (limited to 'tests/zfs-tests/tests/functional/cli_root/zfs_set/canmount_002_pos.ksh')
0 files changed, 0 insertions, 0 deletions