xref: /spdk/test/dd/sparse.sh (revision ba31ad82a159eb1f5929df57ce63b8e87671400b)
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