]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/test/vhost/integrity/integrity_vm.sh
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / test / vhost / integrity / integrity_vm.sh
1 #!/usr/bin/env bash
2 set -xe
3
4 MAKE="make -j$(($(nproc) * 2))"
5
6 if [[ $1 == "spdk_vhost_scsi" ]]; then
7 devs=""
8 for entry in /sys/block/sd*; do
9 if grep -Eq '(INTEL|RAWSCSI|LIO-ORG)' $entry/device/vendor; then
10 devs+="$(basename $entry) "
11 fi
12 done
13 elif [[ $1 == "spdk_vhost_blk" ]]; then
14 devs=$(
15 cd /sys/block
16 echo vd*
17 )
18 fi
19
20 fs=$2
21
22 trap "exit 1" SIGINT SIGTERM EXIT
23
24 for fs in $fs; do
25 for dev in $devs; do
26 i=0
27 parted_cmd="parted -s /dev/${dev}"
28
29 echo "INFO: Creating partition table on disk using: $parted_cmd mklabel gpt"
30 $parted_cmd mklabel gpt
31 while ! ($parted_cmd print | grep -q gpt); do
32 [[ $i -lt 100 ]] || break
33 i=$((i + 1))
34 sleep 0.1
35 done
36 $parted_cmd mkpart primary 2048s 100%
37
38 mkfs_cmd="mkfs.$fs"
39 if [[ $fs == "ntfs" ]]; then
40 mkfs_cmd+=" -f"
41 fi
42 mkfs_cmd+=" /dev/${dev}1"
43 echo "INFO: Creating filesystem using: $mkfs_cmd"
44 i=0
45 until wipefs -a /dev/${dev}1; do
46 [[ $i -lt 100 ]] || break
47 i=$((i + 1))
48 echo "Waiting for /dev/${dev}1"
49 sleep 0.1
50 done
51 $mkfs_cmd
52
53 mkdir -p /mnt/${dev}dir
54 mount -o sync /dev/${dev}1 /mnt/${dev}dir
55
56 fio --name="integrity" --bsrange=4k-512k --iodepth=128 --numjobs=1 --direct=1 \
57 --thread=1 --group_reporting=1 --rw=randrw --rwmixread=70 \
58 --filename=/mnt/${dev}dir/test_file --verify=md5 --do_verify=1 \
59 --verify_backlog=1024 --fsync_on_close=1 --runtime=20 --time_based=1 --size=512m
60
61 # Print out space consumed on target device
62 df -h /dev/$dev
63 done
64
65 for dev in $devs; do
66 umount /mnt/${dev}dir
67 rm -rf /mnt/${dev}dir
68 parted -s /dev/${dev} rm 1
69
70 stats=($(cat /sys/block/$dev/stat))
71 echo ""
72 echo "$dev stats"
73 printf "READ IO cnt: % 8u merges: % 8u sectors: % 8u ticks: % 8u\n" \
74 ${stats[0]} ${stats[1]} ${stats[2]} ${stats[3]}
75 printf "WRITE IO cnt: % 8u merges: % 8u sectors: % 8u ticks: % 8u\n" \
76 ${stats[4]} ${stats[5]} ${stats[6]} ${stats[7]}
77 printf "in flight: % 8u io ticks: % 8u time in queue: % 8u\n" \
78 ${stats[8]} ${stats[9]} ${stats[10]}
79 echo ""
80 done
81 done
82
83 trap - SIGINT SIGTERM EXIT