aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasatake YAMATO <yamato@redhat.com>2024-04-10 18:36:47 +0900
committerMasatake YAMATO <yamato@redhat.com>2024-04-15 18:17:09 +0900
commitd4dea14933bc3ee750d6762a6f615d2a4fe24c34 (patch)
tree01bf2f11dcaa1a1b03554a58b16b158addfc0552
parent1dca39791c0cd7c2f7886e970d7c5e00e5f72ece (diff)
downloadutil-linux-d4dea14933bc3ee750d6762a6f615d2a4fe24c34.tar.gz
tests: (functions.sh) add a helper funcion making a device number from given major and minor nums
Fixes #2919. Suggested by Karel Zak <kzak@redhat.com>. The original code used an obsolete formula to make a device number from given major and minor numbers. ts_device_make is a new helper function based on the formula of __SYSMACROS_DEFINE_MAKEDEV macro defined in /usr/include/bits/sysmacros.h of GNU libc. Suggested by Karel Zak <kzak@redhat.com> in #2919. Signed-off-by: Masatake YAMATO <yamato@redhat.com>
-rw-r--r--tests/functions.sh15
-rw-r--r--tests/ts/lsfd/lsfd-functions.bash2
2 files changed, 16 insertions, 1 deletions
diff --git a/tests/functions.sh b/tests/functions.sh
index 5fe5ba07fd..4a00b2ff4e 100644
--- a/tests/functions.sh
+++ b/tests/functions.sh
@@ -788,6 +788,21 @@ function ts_device_has {
return $res
}
+# Based on __SYSMACROS_DEFINE_MAKEDEV macro
+# defined in /usr/include/bits/sysmacros.h of GNU libc.
+function ts_makedev
+{
+ local major="$1"
+ local minor="$2"
+ local dev
+
+ dev=$(( ( major & 0x00000fff ) << 8))
+ dev=$((dev | ( major & 0xfffff000 ) << 32))
+ dev=$((dev | ( minor & 0x000000ff ) << 0))
+ dev=$((dev | ( minor & 0xffffff00 ) << 12))
+ echo $dev
+}
+
function ts_is_uuid()
{
printf "%s\n" "$1" | grep -E -q '^[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}$'
diff --git a/tests/ts/lsfd/lsfd-functions.bash b/tests/ts/lsfd/lsfd-functions.bash
index 3a3f58f0c8..533c25faed 100644
--- a/tests/ts/lsfd/lsfd-functions.bash
+++ b/tests/ts/lsfd/lsfd-functions.bash
@@ -44,7 +44,7 @@ function lsfd_compare_dev {
echo 'DEV[RUN]:' $?
local MAJ=${DEV%:*}
local MIN=${DEV#*:}
- local DEVNUM=$(( ( MAJ << 8 ) + MIN ))
+ local DEVNUM=$(ts_makedev "$MAJ" "$MIN")
local STAT_DEVNUM=$(stat -c "%d" "$FILE")
echo 'STAT[RUN]:' $?
if [ "${DEVNUM}" == "${STAT_DEVNUM}" ]; then