mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
common/rc: Add tests for character devices
Implement _is_char_dev similar to _is_block_dev to test for character devices. Add a _require_local_device test. This test is similar to _require_block_device but checks if the path refers to a block or a character device. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at> Reviewed-by: Eryu Guan <eguan@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
This commit is contained in:
committed by
Eryu Guan
parent
ff1f614f33
commit
d4c9003b52
@@ -1364,6 +1364,25 @@ _is_block_dev()
|
||||
fi
|
||||
}
|
||||
|
||||
# returns device number if a file is a character device
|
||||
#
|
||||
_is_char_dev()
|
||||
{
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "Usage: _is_char_dev dev" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
_dev=$1
|
||||
if [ -L "${_dev}" ]; then
|
||||
_dev=`readlink -f "${_dev}"`
|
||||
fi
|
||||
|
||||
if [ -c "${_dev}" ]; then
|
||||
src/lstat64 "${_dev}" | $AWK_PROG '/Device type:/ { print $9 }'
|
||||
fi
|
||||
}
|
||||
|
||||
# Do a command, log it to $seqres.full, optionally test return status
|
||||
# and die if command fails. If called with one argument _do executes the
|
||||
# command, logs it, and returns its exit status. With two arguments _do
|
||||
@@ -1792,6 +1811,23 @@ _require_block_device()
|
||||
fi
|
||||
}
|
||||
|
||||
# this test requires a path to refere to a local block or character device
|
||||
# $1 - device
|
||||
_require_local_device()
|
||||
{
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: _require_local_device <dev>" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
if [ "`_is_block_dev "$1"`" != "" ]; then
|
||||
return 0
|
||||
fi
|
||||
if [ "`_is_char_dev "$1"`" != "" ]; then
|
||||
return 0
|
||||
fi
|
||||
_notrun "require $1 to be local device"
|
||||
}
|
||||
|
||||
# brd based ram disks erase the device when they receive a flush command when no
|
||||
# active references are present. This causes problems for DM devices sitting on
|
||||
# top of brd devices as DM doesn't hold active references to the brd device.
|
||||
|
||||
Reference in New Issue
Block a user