#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright 2025 Keith Busch <kbusch@kernel.org>
#
# Tests various direct IO memory and length alignments against the device's
# queue limits reported from sysfs.

. tests/block/rc

DESCRIPTION="Test unusual direct-io offsets"
QUICK=1

device_requires() {
	_require_test_dev_sysfs "queue/max_segments" "queue/dma_alignment" \
		"queue/virt_boundary_mask" "queue/logical_block_size" \
		"queue/max_sectors_kb"
}

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

	(
		orig_dir=$PWD
		cd "${TEST_DEV_SYSFS}/queue" || exit 1
		cmd=(
			"$orig_dir/src/dio-offsets"
			"${TEST_DEV}"
			"$(cat max_segments)"
			"$(cat max_sectors_kb)"
			"$(cat dma_alignment)"
			"$(cat virt_boundary_mask)"
			"$(cat logical_block_size)"
		)
		echo "${cmd[@]}" >>"$FULL"
		if ! "${cmd[@]}"; then
			echo "src/dio-offsets failed"
		fi
	)

	echo "Test complete"
}
