iotests: handle tmpfs
Some tests requires O_DIRECT, or want it by default. Introduce smarter O_DIRECT handling: - Check O_DIRECT in common.rc, if it is requested by selected cache-mode. - Support second fall-through argument in _default_cache_mode Inspired-by: Max's 23e1d054112cec1e Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Message-Id: <20200430124713.3067-2-vsementsov@virtuozzo.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
1b8c458997
commit
cfdca2b9f9
@ -46,8 +46,8 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||||||
_supported_fmt qcow2
|
_supported_fmt qcow2
|
||||||
_supported_proto file
|
_supported_proto file
|
||||||
_supported_os Linux
|
_supported_os Linux
|
||||||
_default_cache_mode none
|
|
||||||
_supported_cache_modes writethrough none writeback
|
_supported_cache_modes writethrough none writeback
|
||||||
|
_default_cache_mode none writeback
|
||||||
|
|
||||||
size=1G
|
size=1G
|
||||||
|
|
||||||
|
@ -673,11 +673,44 @@ _supported_cache_modes()
|
|||||||
_notrun "not suitable for cache mode: $CACHEMODE"
|
_notrun "not suitable for cache mode: $CACHEMODE"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check whether the filesystem supports O_DIRECT
|
||||||
|
_check_o_direct()
|
||||||
|
{
|
||||||
|
$QEMU_IMG create -f raw "$TEST_IMG".test_o_direct 1M > /dev/null
|
||||||
|
out=$($QEMU_IO -f raw -t none -c quit "$TEST_IMG".test_o_direct 2>&1)
|
||||||
|
rm -f "$TEST_IMG".test_o_direct
|
||||||
|
|
||||||
|
[[ "$out" != *"O_DIRECT"* ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
_require_o_direct()
|
||||||
|
{
|
||||||
|
if ! _check_o_direct; then
|
||||||
|
_notrun "file system on $TEST_DIR does not support O_DIRECT"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_check_cache_mode()
|
||||||
|
{
|
||||||
|
if [ $CACHEMODE == "none" ] || [ $CACHEMODE == "directsync" ]; then
|
||||||
|
_require_o_direct
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_check_cache_mode
|
||||||
|
|
||||||
|
# $1 - cache mode to use by default
|
||||||
|
# $2 - (optional) cache mode to use by default if O_DIRECT is not supported
|
||||||
_default_cache_mode()
|
_default_cache_mode()
|
||||||
{
|
{
|
||||||
if $CACHEMODE_IS_DEFAULT; then
|
if $CACHEMODE_IS_DEFAULT; then
|
||||||
|
if [ -z "$2" ] || _check_o_direct; then
|
||||||
CACHEMODE="$1"
|
CACHEMODE="$1"
|
||||||
QEMU_IO="$QEMU_IO --cache $1"
|
else
|
||||||
|
CACHEMODE="$2"
|
||||||
|
fi
|
||||||
|
QEMU_IO="$QEMU_IO --cache $CACHEMODE"
|
||||||
|
_check_cache_mode
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user