Skip to content

Commit

Permalink
fix(dracut.sh): check kernel zstd support early
Browse files Browse the repository at this point in the history
Rather than checking late and falling back to "cat" if the kernel
doesn't support zstd decompression, do this early, and use the
fallback code path.
  • Loading branch information
mwilck authored and johannbg committed Nov 26, 2021
1 parent bdac657 commit 475497b
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions dracut.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2350,6 +2350,17 @@ if [[ $create_early_cpio == yes ]]; then
fi
fi
if check_kernel_config CONFIG_RD_ZSTD; then
DRACUT_KERNEL_RD_ZSTD=yes
else
DRACUT_KERNEL_RD_ZSTD=
fi
if [[ $compress == $DRACUT_COMPRESS_ZSTD* && ! $DRACUT_KERNEL_RD_ZSTD ]]; then
dwarn "dracut: kernel has no zstd support compiled in."
compress=
fi
if [[ $compress && $compress != cat ]]; then
if ! command -v "${compress%% *}" &> /dev/null; then
derror "dracut: cannot execute compression command '$compress', falling back to default"
Expand All @@ -2360,6 +2371,7 @@ fi
if ! [[ $compress ]]; then
# check all known compressors, if none specified
for i in $DRACUT_COMPRESS_PIGZ $DRACUT_COMPRESS_GZIP $DRACUT_COMPRESS_LZ4 $DRACUT_COMPRESS_LZOP $DRACUT_COMPRESS_ZSTD $DRACUT_COMPRESS_LZMA $DRACUT_COMPRESS_XZ $DRACUT_COMPRESS_LBZIP2 $DRACUT_COMPRESS_BZIP2 $DRACUT_COMPRESS_CAT; do
[[ $i != "$DRACUT_COMPRESS_ZSTD" || $DRACUT_KERNEL_RD_ZSTD ]] || continue
command -v "$i" &> /dev/null || continue
compress="$i"
break
Expand Down Expand Up @@ -2406,11 +2418,6 @@ case $compress in
;;
esac
if [[ $compress == $DRACUT_COMPRESS_ZSTD* ]] && ! check_kernel_config CONFIG_RD_ZSTD; then
dwarn "dracut: kernel has no zstd support compiled in."
compress="cat"
fi
if [[ -n $enhanced_cpio ]]; then
if [[ $compress == "cat" ]]; then
# dracut-cpio appends by default, so any ucode remains
Expand Down

0 comments on commit 475497b

Please sign in to comment.