#!/bin/bash
# SPDX-License-Identifier: GPL-3.0+
# Copyright (C) 2017 Omar Sandoval
#
# fio helper functions.

. common/shellcheck

_have_xfs() {
	_have_fs xfs && _have_program mkfs.xfs
}

_xfs_mkfs_and_mount() {
	local bdev=$1
	local mount_dir=$2

	mkdir -p "${mount_dir}"
	umount "${mount_dir}"
	mkfs.xfs -l size=64m -f "${bdev}"
	mount "${bdev}" "${mount_dir}"
}

_xfs_run_fio_verify_io() {
	local mount_dir="/mnt/blktests"
	local bdev=$1
	local sz=$2
	local sz_mb
	local avail
	local avail_mb

	_xfs_mkfs_and_mount "${bdev}" "${mount_dir}" >> "${FULL}" 2>&1

	avail="$(df --output=avail "${mount_dir}" | tail -1)"
	avail_mb="$((avail / 1024))"

	if [[ -z "${sz}" ]]; then
		sz_mb="${avail_mb}"
	else
		sz_mb="$(convert_to_mb "${sz}")"
		if [[ "${sz_mb}" -gt "${avail_mb}" ]]; then
			sz_mb="${avail_mb}"
		fi
	fi

	_run_fio_verify_io --size="${sz_mb}m" --directory="${mount_dir}/"

	umount "${mount_dir}" >> "${FULL}" 2>&1
	rm -fr "${mount_dir}"
}
