aboutsummaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorTerraTech <[email protected]>2018-12-04 09:57:29 -0800
committerBrian Behlendorf <[email protected]>2018-12-04 09:57:29 -0800
commita0cc3726ed0b14ce43b0cfd4af4b703536a587c6 (patch)
treefa8f87304aae8b77cdb116c85f198d34cd0fa91c /etc
parentfedef6dd592cf6e83ab8fc8b81e5407d64f79996 (diff)
zfs-functions.in: is_mounted() always returns 1
The 'while read line; ...; done' loop is run in a piped subshell therefore the 'return 0' would not cause a return from the is_mounted() function. In all cases, this function will always return 1. The fix is to 'return 1' from the subshell on a successful match (no match == return 0), and then negating the final return value. Reviewed-by: George Melikov <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: TerraTech <[email protected]> Closes #8151
Diffstat (limited to 'etc')
-rw-r--r--etc/init.d/zfs-functions.in9
1 files changed, 7 insertions, 2 deletions
diff --git a/etc/init.d/zfs-functions.in b/etc/init.d/zfs-functions.in
index f5b74d458..490503e91 100644
--- a/etc/init.d/zfs-functions.in
+++ b/etc/init.d/zfs-functions.in
@@ -423,9 +423,14 @@ is_mounted()
mount | \
while read line; do
if echo "$line" | grep -q " on $mntpt "; then
- return 0
+ # returns:
+ # 0 on unsuccessful match
+ # 1 on a successful match
+ return 1
fi
done
- return 1
+ # The negation will flip the subshell return result where the default
+ # return value is 0 when a match is not found.
+ return $(( !$? ))
}