1#!/usr/bin/env bash 2set -xe 3 4MAKE="make -j$(($(nproc) * 2))" 5 6if [[ $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 13elif [[ $1 == "spdk_vhost_blk" ]]; then 14 devs=$( 15 cd /sys/block 16 echo vd* 17 ) 18fi 19 20fs=$2 21 22trap "exit 1" SIGINT SIGTERM EXIT 23 24for 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" ]] || [[ $fs == "btrfs" ]]; 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 81done 82 83trap - SIGINT SIGTERM EXIT 84