t/zbd: test random I/O direction in all-conventional case
[fio.git] / t / zbd / test-zbd-support
index 217fdd1048c164afa81a1b4758d5fe4eec1367bc..80763561e80de94d055620fb0ccfdece6a9f9636 100755 (executable)
@@ -1079,6 +1079,34 @@ test52() {
        check_reset_count -eq 0 || return $?
 }
 
+# Check both reads and writes are executed by random I/O to conventional zones.
+test53() {
+       local off capacity io read_b=0 written_b=0
+
+       require_zbd || return $SKIP_TESTCASE
+       require_conv_zones 4 || return $SKIP_TESTCASE
+
+       off=$((first_sequential_zone_sector * 512 - 4 * zone_size))
+       capacity=$(total_zone_capacity 4 $off $dev)
+       run_fio --name=job --filename=${dev} --rw=randrw --bs=64K \
+               --size=$((4 * zone_size)) "$(ioengine "psync")" --offset=${off}\
+               --zonemode=zbd --direct=1 --zonesize=${zone_size} \
+               ${job_var_opts[@]} \
+               >> "${logfile}.${test_number}" 2>&1 || return $?
+
+       written_b=$(fio_written <"${logfile}.${test_number}")
+       read_b=$(fio_read <"${logfile}.${test_number}")
+       io=$((written_b + read_b))
+       echo "Number of bytes read: $read_b" >>"${logfile}.${test_number}"
+       echo "Number of bytes written: $written_b" >>"${logfile}.${test_number}"
+       echo "Total number of bytes read and written: $io <> $capacity" \
+            >>"${logfile}.${test_number}"
+       if ((io==capacity && written_b != 0 && read_b != 0)); then
+               return 0
+       fi
+       return 1
+}
+
 tests=()
 dynamic_analyzer=()
 reset_all_zones=