initramfs: add function to zfsexpandknowledge

Adding function for honoring the
ZFS_INITRD_ADDITIONAL_DATASETS variable.

Signed-off-by: theQuestionmark <17354322+theQuestionmark@users.noreply.github.com>
This commit is contained in:
theQuestionmark 2022-06-12 00:44:11 +02:00
parent 9c52dadbdd
commit 18dff34a38
1 changed files with 28 additions and 1 deletions

View File

@ -50,6 +50,24 @@ find_zfs_block_devices() {
done < /proc/self/mountinfo
}
find_add_zpool_mps() {
local dev
local mp
local fstype
local _
numfields="$(awk '{print NF; exit}' /proc/self/mountinfo)"
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
[ "$dev" = "$1" ] && echo "$mp"
done < /proc/self/mountinfo
}
array_contains () {
local e
for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
@ -75,6 +93,14 @@ check() {
# shellcheck disable=SC2154
if [ -n "$hostonly" ]; then
if [ -f /etc/default/zfs ]; then
. /etc/default/zfs
if [ -n "$ZFS_INITRD_ADDITIONAL_DATASETS" ]; then
for add_zpool in $ZFS_INITRD_ADDITIONAL_DATASETS; do
add_mps+=$(find_add_zpool_mps "$add_zpool")
done
fi
fi
for mp in \
"/" \
"/etc" \
@ -87,7 +113,8 @@ if [ -n "$hostonly" ]; then
"/usr/sbin" \
"/usr/lib" \
"/usr/lib64" \
"/boot";
"/boot" \
"${add_mps[@]}";
do
mp=$(readlink -f "$mp")
mountpoint "$mp" >/dev/null 2>&1 || continue