#!/bin/bash
# SPDX-License-Identifier: GPL-3.0+
# Copyright (C) 2017 Johannes Thumshirn <jthumshirn@suse.de>
#
# Do disable PCI device while doing I/O to it

. tests/block/rc

DESCRIPTION="disable PCI device while doing I/O"
TIMED=1
CAN_BE_ZONED=1

requires() {
	_have_fio && _have_program setpci
}

device_requires() {
	_require_test_dev_is_pci
}

test_device() {
	echo "Running ${TEST_NAME}"

	pdev="$(_get_pci_dev_from_blkdev)"

	if _test_dev_is_rotational; then
		size="32m"
	else
		size="1g"
	fi

	# start fio job
	_run_fio_rand_io --filename="$TEST_DEV" --size="$size" \
			--ignore_error=EIO,ENXIO,ENODEV &

	# toggle PCI Command Register's Bus Master Enabling
	while kill -0 $! 2>/dev/null; do
		setpci -s "${pdev}" 4.w=0:4
		sleep .2
		setpci -s "${pdev}" 4.w=4:4
		sleep .2
	done

	echo "Test complete"
}
