summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2020-10-25 20:19:31 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2020-10-26 13:06:52 +0100
commitb0333841352b76ce13464b82cb1876ea82b80351 (patch)
tree02bdda9ffa0a00c775cc8a226fdb0f32cc8f7e07
parent2183af62e56ff68e77eb29c7da9fcf2445b30eba (diff)
downloadlvm2-b0333841352b76ce13464b82cb1876ea82b80351.tar.gz
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.
-rwxr-xr-xscripts/fsadm.sh13
1 files changed, 5 insertions, 8 deletions
diff --git a/scripts/fsadm.sh b/scripts/fsadm.sh
index 5bba5ff40..9b95d318d 100755
--- a/scripts/fsadm.sh
+++ b/scripts/fsadm.sh
@@ -377,16 +377,13 @@ 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"))
+ DEVSIZE=$(( $DEVSIZE * $SSSIZE ))
fi
}