[PATCH v2] module-setup: do not add duplicate ip=xxx

Vivek Goyal vgoyal at redhat.com
Wed Sep 24 13:19:21 UTC 2014


On Wed, Sep 24, 2014 at 12:50:43PM +0800, WANG Chao wrote:
> In case of iscsi boot, kernel cmdline will contain ip=xxx kernel
> parameter for dracut setting up iscsi root in initramfs. For example:
> 
> "root=xxx ip=192.168.3.26:::255.255.255.0:localhost.localdomain:eno19:none ..."
> 
> dracut doesn't allow duplicate ip conf for the same network card. dracut
> will not ignore the either of the duplicate. Instead, it refuses to
> continue:
> 
> [   15.876306] dracut: FATAL: For argument 'ip=192.168.3.26:::255.255.255.0:localhost.localdomain:eno19:none'\n
> Duplication configurations for 'eno19'
> [   16.055513] dracut: Refusing to continue ev argument for multiple ip= lines
> 
> That's why in our code we don't add a duplicate ip conf when handling
> the same network card the second time. But we never consider the case
> that ip conf is already added in kernel cmdline for some special
> purpose, for example, iscsi boot.
> 
> Now we also look up /proc/cmdline for ip conf. If it exists, we use the
> existing one. The existing one should work out of box because dracut
> will handle it in second kernel like it does for first kernel. That
> said, the network card will be brought up and root disk will be mounted
> under /sysroot.
> 
> Signed-off-by: WANG Chao <chaowang at redhat.com>

Acked-by: Vivek Goyal <vgoyal at redhat.com>

Vivek

> ---
>  dracut-module-setup.sh | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
> index 02a0557..38801de 100755
> --- a/dracut-module-setup.sh
> +++ b/dracut-module-setup.sh
> @@ -234,7 +234,10 @@ kdump_setup_netdev() {
>  
>      # dracut doesn't allow duplicated configuration for same NIC, even they're exactly the same.
>      # so we have to avoid adding duplicates
> -    if [ ! -f $_ip_conf ] || ! grep -q $_ip_opts $_ip_conf; then
> +    # We should also check /proc/cmdline for existing ip=xx arg.
> +    # For example, iscsi boot will specify ip=xxx arg in cmdline.
> +    if [ ! -f $_ip_conf ] || ! grep -q $_ip_opts $_ip_conf &&\
> +        ! grep -q "ip=[^[:space:]]*$_netdev" /proc/cmdline; then
>          echo "$_ip_opts" >> $_ip_conf
>      fi
>  
> -- 
> 1.9.3


More information about the kexec mailing list