Hi Coiby,
On Tue, 27 Dec 2022 09:26:23 +0800 Coiby Xu coxu@redhat.com wrote:
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2140721
Currently, if users specify dumping to nfsv4 target via dracut_args --mount "<NFS-server-ip>:/var/crash /mnt nfs defaults" it fails with the following errors, [ 5.159760] mount[446]: mount.nfs: Protocol not supported [ 5.164502] systemd[1]: mnt.mount: Mount process exited, code=exited, status=32/n/a [ 5.167616] systemd[1]: mnt.mount: Failed with result 'exit-code'. [FAILED] Failed to mount /mnt.
This is because nfsv4-releted drivers are not installed to kdump initrd. mkdumprd calls dracut with "--hostonly-mode strict". If nfsv4-related drivers aren't loaded before calling dracut, they won't be installed. When users specify nfs dumping via dracut_args, kexec-tools won't mount the nfs fs beforehand hence nfsv4-related drivers won't be installed. Note dracut only installs the nfs driver i.e. nfsv3 driver for "--mount ... nfs". So also install nfsv4-related drivers when users specify nfs dumping via dracut_args. Since nfs_layout_nfsv41_files depends on nfsv4, the nfsv4 driver will be installed automatically.
As for the reason why we support nfs dumping via dracut_args instead of asking user to use the nfs directive, please refer to commit 74c6f464 ("Support special mount information via 'dracut_args'").
I don't understand why this was designed the way it is. Personally I would have treated the dracut_args and nfs directive identical and would simply have added a "--no-mount" option... Anyway that's nothing we can change right now. So your patch looks like a valid workaround to me.
Thanks Philipp
Fixes: 4eedcae5 ("dracut-module-setup.sh: don't include multipath-hostonly") Reported-by: rcheerla@redhat.com Signed-off-by: Coiby Xu coxu@redhat.com
mkdumprd | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/mkdumprd b/mkdumprd index 3e250e02..51ca4f01 100644 --- a/mkdumprd +++ b/mkdumprd @@ -420,6 +420,15 @@ while read -r config_opt config_val; do verify_core_collector "$config_val" ;; dracut_args)
# When users specify nfs dumping via dracut_args, kexec-tools won't# mount nfs fs beforehand thus nfsv4-related drivers won't be installed# because we call dracut with --hostonly-mode strict. So manually install# nfsv4-related drivers.if [[ $(get_dracut_args_fstype "$config_val") == nfs* ]]; thenadd_dracut_arg "--add-drivers" nfs_layout_nfsv41_filesfi- while read -r dracut_arg; do add_dracut_arg "$dracut_arg" done <<< "$(echo "$config_val" | xargs -n 1 echo)"