aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/openzfs/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/openzfs/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in')
-rwxr-xr-xsys/contrib/openzfs/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in24
1 files changed, 15 insertions, 9 deletions
diff --git a/sys/contrib/openzfs/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in b/sys/contrib/openzfs/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in
index a161fbf6f113..b1f2d8f4c7b3 100755
--- a/sys/contrib/openzfs/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in
+++ b/sys/contrib/openzfs/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in
@@ -3,7 +3,7 @@
get_devtype() {
local typ
typ=$(udevadm info --query=property --name="$1" | sed -n 's|^ID_FS_TYPE=||p')
- if [ -z "$typ" ] ; then
+ if [[ -z "$typ" ]] ; then
typ=$(blkid -c /dev/null "$1" -o value -s TYPE)
fi
echo "$typ"
@@ -22,7 +22,7 @@ get_pool_devices() {
else
awk -F '\t' '/\t\/dev/ { print $2 }' "$poolconfigtemp" | \
while read -r pooldev ; do
- if [ -e "$pooldev" ] ; then
+ if [[ -e "$pooldev" ]] ; then
resolved="$(readlink -f "$pooldev")"
dinfo "zfsexpandknowledge: pool $1 has device $pooldev (which resolves to $resolved)"
echo "$resolved"
@@ -38,15 +38,15 @@ find_zfs_block_devices() {
local fstype
local _
numfields="$(awk '{print NF; exit}' /proc/self/mountinfo)"
- if [ "$numfields" = "10" ] ; then
+ if [[ "$numfields" = "10" ]] ; then
fields="_ _ _ _ mp _ _ fstype dev _"
else
fields="_ _ _ _ mp _ _ _ fstype dev _"
fi
# shellcheck disable=SC2086
while read -r ${fields?} ; do
- [ "$fstype" = "zfs" ] || continue
- [ "$mp" = "$1" ] && get_pool_devices "${dev%%/*}"
+ [[ "$fstype" = "zfs" ]] || continue
+ [[ "$mp" = "$1" ]] && get_pool_devices "${dev%%/*}"
done < /proc/self/mountinfo
}
@@ -57,6 +57,12 @@ array_contains () {
}
check() {
+ # https://github.com/dracutdevs/dracut/pull/1711 provides a zfs_devs
+ # function to detect the physical devices backing zfs pools. If this
+ # function exists in the version of dracut this module is being called
+ # from, then it does not need to run.
+ type zfs_devs >/dev/null 2>&1 && return 1
+
local mp
local dev
local blockdevs
@@ -67,7 +73,7 @@ check() {
local _depdevtype
# shellcheck disable=SC2154
-if [ -n "$hostonly" ]; then
+if [[ -n "$hostonly" ]]; then
for mp in \
"/" \
@@ -86,7 +92,7 @@ if [ -n "$hostonly" ]; then
mp=$(readlink -f "$mp")
mountpoint "$mp" >/dev/null 2>&1 || continue
blockdevs=$(find_zfs_block_devices "$mp")
- if [ -z "$blockdevs" ] ; then continue ; fi
+ if [[ -z "$blockdevs" ]] ; then continue ; fi
dinfo "zfsexpandknowledge: block devices backing ZFS dataset $mp: ${blockdevs//$'\n'/ }"
for dev in $blockdevs
do
@@ -94,9 +100,9 @@ if [ -n "$hostonly" ]; then
fstype=$(get_devtype "$dev")
host_fs_types["$dev"]="$fstype"
majmin=$(get_maj_min "$dev")
- if [ -d "/sys/dev/block/$majmin/slaves" ] ; then
+ if [[ -d "/sys/dev/block/$majmin/slaves" ]] ; then
for _depdev in "/sys/dev/block/$majmin/slaves"/*; do
- [ -f "$_depdev/dev" ] || continue
+ [[ -f "$_depdev/dev" ]] || continue
_depdev="/dev/${_depdev##*/}"
_depdevname=$(udevadm info --query=property --name="$_depdev" | sed -n 's|^DEVNAME=||p')
_depdevtype=$(get_devtype "$_depdevname")