mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-11 03:24:58 -06:00
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 23e1d05411
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
2 changed files with 36 additions and 3 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue