From 4dcb35cb03021f1ae450078f3e8bf55c40751a56 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Sun, 25 Oct 2020 20:19:31 +0100 Subject: [PATCH] fsadm: better check for getsize64 support Older blockdev tool return failure error code with --help, and since now the tool abort on command failure, lets detect missing --getsize64 support directly by running command and check if it returns something usable. It's likely very hard to have the system with such old blockdev tool and newer lvm2 compiled. --- scripts/fsadm.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/scripts/fsadm.sh b/scripts/fsadm.sh index 5bba5ff40..e20401be1 100755 --- a/scripts/fsadm.sh +++ b/scripts/fsadm.sh @@ -377,14 +377,11 @@ detect_mounted() { # get the full size of device in bytes detect_device_size() { # check if blockdev supports getsize64 - "$BLOCKDEV" --help 2>&1 | "$GREP" getsize64 >"$NULL" - if test $? -eq 0; then - DEVSIZE=$("$BLOCKDEV" --getsize64 "$VOLUME") + DEVSIZE=$("$BLOCKDEV" --getsize64 "$VOLUME" 2>"$NULL" || true) + if test -n "$DEVSIZE" ; then + DEVSIZE=$("$BLOCKDEV" --getsize "$VOLUME" || true) test -n "$DEVSIZE" || error "Cannot read size of device \"$VOLUME\"." - else - DEVSIZE=$("$BLOCKDEV" --getsize "$VOLUME") - test -n "$DEVSIZE" || error "Cannot read size of device \"$VOLUME\"." - SSSIZE=$("$BLOCKDEV" --getss "$VOLUME") + SSSIZE=$("$BLOCKDEV" --getss "$VOLUME" || true) test -n "$SSSIZE" || error "Cannot read sector size of device \"$VOLUME\"." DEVSIZE=$(("$DEVSIZE" * "$SSSIZE")) fi