From 18dff34a3845a05736cf417dbc74402b06ab06c4 Mon Sep 17 00:00:00 2001 From: theQuestionmark <17354322+theQuestionmark@users.noreply.github.com> Date: Sun, 12 Jun 2022 00:44:11 +0200 Subject: [PATCH] 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> --- .../02zfsexpandknowledge/module-setup.sh.in | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in b/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in index df8df3181f..d9beb47199 100755 --- a/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in +++ b/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in @@ -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