13e917320SDamiano Cipriani#!/usr/bin/env bash 2eb53c232Spaul luse# SPDX-License-Identifier: BSD-3-Clause 3eb53c232Spaul luse# All rights reserved. 4eb53c232Spaul luse# 5eb53c232Spaul luse 63e917320SDamiano Ciprianitestdir=$(readlink -f "$(dirname "$0")") 73e917320SDamiano Ciprianirootdir=$(readlink -f "$testdir/../../") 83e917320SDamiano Ciprianisource "$testdir/common.sh" 93e917320SDamiano Cipriani 103e917320SDamiano Ciprianicleanup() { 113e917320SDamiano Cipriani rm $aio_disk 123e917320SDamiano Cipriani rm $file1 133e917320SDamiano Cipriani rm $file2 143e917320SDamiano Cipriani rm $file3 153e917320SDamiano Cipriani} 163e917320SDamiano Cipriani 173e917320SDamiano Ciprianiprepare() { 183e917320SDamiano Cipriani truncate $aio_disk --size 104857600 193e917320SDamiano Cipriani 203e917320SDamiano Cipriani dd if=/dev/zero of=$file1 bs=4M count=1 213e917320SDamiano Cipriani dd if=/dev/zero of=$file1 bs=4M count=1 seek=4 223e917320SDamiano Cipriani dd if=/dev/zero of=$file1 bs=4M count=1 seek=8 233e917320SDamiano Cipriani} 243e917320SDamiano Cipriani 253e917320SDamiano Ciprianifile_to_file() { 263e917320SDamiano Cipriani local stat1_s stat1_b 273e917320SDamiano Cipriani local stat2_s stat2_b 283e917320SDamiano Cipriani 293e917320SDamiano Cipriani local -A method_bdev_aio_create_0=( 303e917320SDamiano Cipriani ["filename"]=$aio_disk 313e917320SDamiano Cipriani ["name"]=$aio_bdev 323e917320SDamiano Cipriani ["block_size"]=4096 333e917320SDamiano Cipriani ) 343e917320SDamiano Cipriani 353e917320SDamiano Cipriani local -A method_bdev_lvol_create_lvstore_1=( 363e917320SDamiano Cipriani ["bdev_name"]=$aio_bdev 373e917320SDamiano Cipriani ["lvs_name"]=$lvstore 383e917320SDamiano Cipriani ) 393e917320SDamiano Cipriani 403e917320SDamiano Cipriani "${DD_APP[@]}" \ 413e917320SDamiano Cipriani --if="$file1" \ 423e917320SDamiano Cipriani --of="$file2" \ 433e917320SDamiano Cipriani --bs=12582912 \ 443e917320SDamiano Cipriani --sparse \ 453e917320SDamiano Cipriani --json <(gen_conf) 463e917320SDamiano Cipriani 473e917320SDamiano Cipriani stat1_s=$(stat --printf='%s' $file1) 483e917320SDamiano Cipriani stat2_s=$(stat --printf='%s' $file2) 493e917320SDamiano Cipriani 503e917320SDamiano Cipriani [[ $stat1_s == "$stat2_s" ]] 513e917320SDamiano Cipriani 523e917320SDamiano Cipriani stat1_b=$(stat --printf='%b' $file1) 533e917320SDamiano Cipriani stat2_b=$(stat --printf='%b' $file2) 543e917320SDamiano Cipriani 553e917320SDamiano Cipriani [[ $stat1_b == "$stat2_b" ]] 563e917320SDamiano Cipriani} 573e917320SDamiano Cipriani 583e917320SDamiano Ciprianifile_to_bdev() { 593e917320SDamiano Cipriani local -A method_bdev_aio_create_0=( 603e917320SDamiano Cipriani ["filename"]=$aio_disk 613e917320SDamiano Cipriani ["name"]=$aio_bdev 623e917320SDamiano Cipriani ["block_size"]=4096 633e917320SDamiano Cipriani ) 643e917320SDamiano Cipriani 653e917320SDamiano Cipriani local -A method_bdev_lvol_create_1=( 663e917320SDamiano Cipriani ["lvs_name"]=$lvstore 673e917320SDamiano Cipriani ["lvol_name"]=$lvol 68*ba31ad82SKonrad Sztyber ["size_in_mib"]=36 693e917320SDamiano Cipriani ["thin_provision"]=true 703e917320SDamiano Cipriani ) 713e917320SDamiano Cipriani 723e917320SDamiano Cipriani "${DD_APP[@]}" \ 733e917320SDamiano Cipriani --if="$file2" \ 743e917320SDamiano Cipriani --ob="$lvstore/$lvol" \ 753e917320SDamiano Cipriani --bs=12582912 \ 763e917320SDamiano Cipriani --sparse \ 773e917320SDamiano Cipriani --json <(gen_conf) 783e917320SDamiano Cipriani} 793e917320SDamiano Cipriani 803e917320SDamiano Ciprianibdev_to_file() { 813e917320SDamiano Cipriani local stat2_s stat2_b 823e917320SDamiano Cipriani local stat3_s stat3_b 833e917320SDamiano Cipriani 843e917320SDamiano Cipriani local -A method_bdev_aio_create_0=( 853e917320SDamiano Cipriani ["filename"]=$aio_disk 863e917320SDamiano Cipriani ["name"]=$aio_bdev 873e917320SDamiano Cipriani ["block_size"]=4096 883e917320SDamiano Cipriani ) 893e917320SDamiano Cipriani 903e917320SDamiano Cipriani "${DD_APP[@]}" \ 913e917320SDamiano Cipriani --ib="$lvstore/$lvol" \ 923e917320SDamiano Cipriani --of="$file3" \ 933e917320SDamiano Cipriani --bs=12582912 \ 943e917320SDamiano Cipriani --sparse \ 953e917320SDamiano Cipriani --json <(gen_conf) 963e917320SDamiano Cipriani 973e917320SDamiano Cipriani stat2_s=$(stat --printf='%s' $file2) 983e917320SDamiano Cipriani stat3_s=$(stat --printf='%s' $file3) 993e917320SDamiano Cipriani 1003e917320SDamiano Cipriani [[ $stat2_s == "$stat3_s" ]] 1013e917320SDamiano Cipriani 1023e917320SDamiano Cipriani stat2_b=$(stat --printf='%b' $file2) 1033e917320SDamiano Cipriani stat3_b=$(stat --printf='%b' $file3) 1043e917320SDamiano Cipriani 1053e917320SDamiano Cipriani [[ $stat2_b == "$stat3_b" ]] 1063e917320SDamiano Cipriani} 1073e917320SDamiano Cipriani 1083e917320SDamiano Ciprianiaio_disk="dd_sparse_aio_disk" 1093e917320SDamiano Ciprianiaio_bdev="dd_aio" 1103e917320SDamiano Ciprianifile1="file_zero1" 1113e917320SDamiano Ciprianifile2="file_zero2" 1123e917320SDamiano Ciprianifile3="file_zero3" 1133e917320SDamiano Ciprianilvstore="dd_lvstore" 1143e917320SDamiano Ciprianilvol="dd_lvol" 1153e917320SDamiano Cipriani 1163e917320SDamiano Ciprianitrap "cleanup" EXIT 1173e917320SDamiano Cipriani 1183e917320SDamiano Ciprianiprepare 1193e917320SDamiano Cipriani 1203e917320SDamiano Ciprianirun_test "dd_sparse_file_to_file" file_to_file 1213e917320SDamiano Ciprianirun_test "dd_sparse_file_to_bdev" file_to_bdev 1223e917320SDamiano Ciprianirun_test "dd_sparse_bdev_to_file" bdev_to_file 123