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 <mail@gmelikov.ru>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: TerraTech <TerraTech@users.noreply.github.com>
Closes #8151
This commit is contained in:
TerraTech 2018-12-04 09:57:29 -08:00 committed by Brian Behlendorf
parent fedef6dd59
commit a0cc3726ed
1 changed files with 7 additions and 2 deletions

View File

@ -423,9 +423,14 @@ is_mounted()
mount | \ mount | \
while read line; do while read line; do
if echo "$line" | grep -q " on $mntpt "; then if echo "$line" | grep -q " on $mntpt "; then
return 0 # returns:
# 0 on unsuccessful match
# 1 on a successful match
return 1
fi fi
done 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 $(( !$? ))
} }