b5a9e5 Seperate dracut and dracut-squash compressor for zstd

Authored and Committed by liutgnu 2 years ago
    Seperate dracut and dracut-squash compressor for zstd
    
    Upstream: fedora
    Resolves: bz2045949
    Resolves: bz2044804
    Conflict: none
    
    commit fc1c79ffd21e7bcb3a710368cd7023c9a634258e
    Author: Tao Liu <ltao@redhat.com>
    Date:   Sat Oct 8 12:09:08 2022 +0800
    
        Seperate dracut and dracut-squash compressor for zstd
    
        Previously kexec-tools will pass "--compress zstd" to dracut. It
        will make dracut to decide whether: a) call mksquashfs to make a
        zstd format squash-root.img, b) call cmd zstd to make a initramfs.
    
        Since dracut(>= 057) has decoupled the compressor for dracut and
        dracut-squash, So in this patch, we will pass the compressor seperately.
    
        Note:
    
        The is_squash_available && !dracut_has_option --squash-compressor
        && !is_zsdt_command_available case is left unprocessed on purpose.
    
        Actually, the situation when we want to call zstd compression is:
        1) If squash function OK, we want dracut to invoke mksquashfs to make
        a zstd format squash-root.img within initramfs.
        2) If squash function is not OK, and cmd zstd presents, we want dracut
        to invoke cmd zstd to make a zstd format initramfs.
    
        is_zstd_command_available check can handle case 2 completely.
    
        However, for the is_squash_available check, it cannot handle case 1
        completely. It only checks if the kernel supports squashfs, it doesn't
        check whether the squash module has been added by dracut when making
        initramfs. In fact, in kexec-tools we are unable to do the check,
        there are multiple ways to forbit dracut to load a module, such as
        "dracut -o module" and "omit_dracutmodules in dracut.conf".
    
        When squash dracut module is omitted, is_squash_available check will
        still pass, so "--compress zstd" will be appended to dracut cmdline,
        and it will call cmd zstd to do the compression. However cmd zstd may
        not exist, so it fails.
    
        The previous "--compress zstd" is ambiguous, after the intro of
        "--squash-compressor", "--squash-compressor" only effect for
        mksquashfs and "--compress" only effect for specific cmd.
    
        So for the is_squash_available && !dracut_has_option
        --squash-compressor && !is_zsdt_command_available case, we just leave
        it to be handled the default way.
    
        Reviewed-by: Philipp Rudo <prudo@redhat.com>
        Signed-off-by: Tao Liu <ltao@redhat.com>
    
    Signed-off-by: Tao Liu <ltao@redhat.com>
    
        
file modified
+7 -2
file modified
+0 -1
file modified
+3 -4
file modified
+3 -1