* [PATCH v2 0/2] support multiple bonding interfaces
@ 2013-04-08 9:47 Baoquan He
[not found] ` <cover.1365413867.git.bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 6+ messages in thread
From: Baoquan He @ 2013-04-08 9:47 UTC (permalink / raw)
To: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA
Cc: Baoquan He
Hi Harald,
I tested your patch - "network: support multiple bonding interfaces",
and it works very well on f19 on my local PC.
The 2/2 patch is used to add a script file to wait the logical interface
up during initqueue, like bond, bridge and vlan. I just tested bond case,
it works.
Please help review it when convenient.
Baoquan He (2):
network: support multiple bonding interfaces
Wait for logical interface to be up
modules.d/40network/ifup.sh | 15 ++++++++++-----
modules.d/40network/net-genrules.sh | 20 ++++++++++++++++----
modules.d/40network/parse-bond.sh | 6 +++---
modules.d/40network/parse-bridge.sh | 6 ------
modules.d/45ifcfg/write-ifcfg.sh | 9 +++++----
5 files changed, 34 insertions(+), 22 deletions(-)
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/2] network: support multiple bonding interfaces
[not found] ` <cover.1365413867.git.bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2013-04-08 9:47 ` Baoquan He
[not found] ` <99a1ec144499cee623d5096ce9873bf385616c16.1365413867.git.bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-04-08 9:47 ` [PATCH v2 2/2] Wait for logical interface to be up Baoquan He
1 sibling, 1 reply; 6+ messages in thread
From: Baoquan He @ 2013-04-08 9:47 UTC (permalink / raw)
To: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA
Cc: Baoquan He
From: Harald Hoyer <harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Currently dracut only support 1 bond, namyly bond0 by default. However multiple
bonds configuration may be needed. For example in kdump, in 1st kernel, more
than one bonds may be configured, and bondX other than bond0 is used as output
interface to remote host which will store dump core. This patch can solve this
problem, to write real bond information to initramfs, 2nd kdump kernel will
use it to create the relevant bondX interface.
Tested-by: Baoquan He <bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Signed-off-by: Baoquan He <bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
modules.d/40network/ifup.sh | 15 ++++++++++-----
modules.d/40network/net-genrules.sh | 9 ++++++---
modules.d/40network/parse-bond.sh | 6 +++---
modules.d/40network/parse-bridge.sh | 6 ------
modules.d/45ifcfg/write-ifcfg.sh | 9 +++++----
5 files changed, 24 insertions(+), 21 deletions(-)
diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
index 582278f..dccd174 100755
--- a/modules.d/40network/ifup.sh
+++ b/modules.d/40network/ifup.sh
@@ -21,14 +21,18 @@ use_bridge='false'
use_vlan='false'
# enslave this interface to bond?
-if [ -e /tmp/bond.info ]; then
- . /tmp/bond.info
+for i in /tmp/bond.*.info; do
+ [ -e "$i" ] || continue
+ unset bondslaves
+ unset bondname
+ . "$i"
for slave in $bondslaves ; do
if [ "$netif" = "$slave" ] ; then
netif=$bondname
+ break 2
fi
done
-fi
+done
if [ -e /tmp/team.info ]; then
. /tmp/team.info
@@ -134,11 +138,12 @@ if [ "$netif" = "lo" ] ; then
fi
# start bond if needed
-if [ -e /tmp/bond.info ]; then
- . /tmp/bond.info
+if [ -e /tmp/bond.${netif}.info ]; then
+ . /tmp/bond.${netif}.info
if [ "$netif" = "$bondname" ] && [ ! -e /tmp/net.$bondname.up ] ; then # We are master bond device
modprobe bonding
+ echo "+$netif" > /sys/class/net/bonding_masters
ip link set $netif down
# Stolen from ifup-eth
diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh
index f4652b9..05fa5f3 100755
--- a/modules.d/40network/net-genrules.sh
+++ b/modules.d/40network/net-genrules.sh
@@ -28,11 +28,14 @@ fi
fi
# bond: attempt only the defined interface (override bridge defines)
- if [ -e /tmp/bond.info ]; then
- . /tmp/bond.info
+ for i in /tmp/bond.*.info; do
+ [ -e "$i" ] || continue
+ unset bondslaves
+ unset bondname
+ . "$i"
# It is enough to fire up only one
IFACES="$IFACES ${bondslaves%% *}"
- fi
+ done
if [ -e /tmp/team.info ]; then
. /tmp/team.info
diff --git a/modules.d/40network/parse-bond.sh b/modules.d/40network/parse-bond.sh
index 983eb3a..25c51b8 100755
--- a/modules.d/40network/parse-bond.sh
+++ b/modules.d/40network/parse-bond.sh
@@ -54,8 +54,8 @@ if getarg bond >/dev/null; then
fi
# Make it suitable for initscripts export
bondoptions=$(str_replace "$bondoptions" ";" ",")
- echo "bondname=$bondname" > /tmp/bond.info
- echo "bondslaves=\"$bondslaves\"" >> /tmp/bond.info
- echo "bondoptions=\"$bondoptions\"" >> /tmp/bond.info
+ echo "bondname=$bondname" > /tmp/bond.${bondname}.info
+ echo "bondslaves=\"$bondslaves\"" >> /tmp/bond.${bondname}.info
+ echo "bondoptions=\"$bondoptions\"" >> /tmp/bond.${bondname}.info
return
fi
diff --git a/modules.d/40network/parse-bridge.sh b/modules.d/40network/parse-bridge.sh
index 1f027bb..8c305c0 100755
--- a/modules.d/40network/parse-bridge.sh
+++ b/modules.d/40network/parse-bridge.sh
@@ -37,12 +37,6 @@ parsebridge() {
unset bridgename ethnames
iface=eth0
-if [ -e /tmp/bond.info ]; then
- . /tmp/bond.info
- if [ -n "$bondname" ] ; then
- iface=$bondname
- fi
-fi
# Parse bridge for bridgename and ethnames
if bridge="$(getarg bridge)"; then
diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
index f7a476c..16da5e4 100755
--- a/modules.d/45ifcfg/write-ifcfg.sh
+++ b/modules.d/45ifcfg/write-ifcfg.sh
@@ -9,10 +9,6 @@ udevadm settle --timeout=30
read IFACES < /tmp/net.ifaces
-if [ -e /tmp/bond.info ]; then
- . /tmp/bond.info
-fi
-
if [ -e /tmp/bridge.info ]; then
. /tmp/bridge.info
fi
@@ -89,6 +85,11 @@ for netif in $IFACES ; do
# bridge?
unset bridge
unset bond
+ unset bondslaves
+ unset bondname
+ unset bondoptions
+ [ -e /tmp/bond.${netif}.info ] && . /tmp/bond.${netif}.info
+
uuid=$(cat /proc/sys/kernel/random/uuid)
if [ "$netif" = "$bridgename" ]; then
bridge=yes
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] Wait for logical interface to be up
[not found] ` <cover.1365413867.git.bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-04-08 9:47 ` [PATCH v2 1/2] network: " Baoquan He
@ 2013-04-08 9:47 ` Baoquan He
[not found] ` <9100182be23fd2ec4e42f0ba667bc09cab6ca056.1365413867.git.bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
1 sibling, 1 reply; 6+ messages in thread
From: Baoquan He @ 2013-04-08 9:47 UTC (permalink / raw)
To: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA
Cc: Baoquan He
If bootdev is logical interface like bond, bridge or vlan, we need
wait them up.
Signed-off-by: Baoquan He <bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
modules.d/40network/net-genrules.sh | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh
index 05fa5f3..be2f811 100755
--- a/modules.d/40network/net-genrules.sh
+++ b/modules.d/40network/net-genrules.sh
@@ -25,6 +25,7 @@ fi
if [ -e /tmp/bridge.info ]; then
. /tmp/bridge.info
IFACES="$IFACES ${ethnames%% *}"
+ MASTER_IFACES="$MASTER_IFACES $bridgename"
fi
# bond: attempt only the defined interface (override bridge defines)
@@ -35,16 +36,19 @@ fi
. "$i"
# It is enough to fire up only one
IFACES="$IFACES ${bondslaves%% *}"
+ MASTER_IFACES="$MASTER_IFACES ${bondname}"
done
if [ -e /tmp/team.info ]; then
. /tmp/team.info
IFACES="$IFACES ${teamslaves}"
+ MASTER_IFACES="$MASTER_IFACES ${teammaster}"
fi
if [ -e /tmp/vlan.info ]; then
. /tmp/vlan.info
IFACES="$IFACES $phydevice"
+ MASTER_IFACES="$MASTER_IFACES ${vlanname}"
fi
if [ -z "$IFACES" ]; then
@@ -56,7 +60,7 @@ fi
fi
ifup='/sbin/ifup $env{INTERFACE}'
- [ -z "$netroot" ] && ifup="$ifup -m"
+ [ -z "$netroot" ] && ifup="$ifup -m"
# BOOTIF says everything, use only that one
BOOTIF=$(getarg 'BOOTIF=')
@@ -74,6 +78,11 @@ fi
fi
done
+ for iface in $MASTER_IFACES; do
+ if [ "$bootdev" = "$iface" ]; then
+ echo "[ -f /tmp/setup_net_${iface}.ok ]" >$hookdir/initqueue/finished/wait-$iface.sh
+ fi
+ done
# Default: We don't know the interface to use, handle all
# Fixme: waiting for the interface as well.
else
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] Wait for logical interface to be up
[not found] ` <9100182be23fd2ec4e42f0ba667bc09cab6ca056.1365413867.git.bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2013-04-09 3:04 ` Dave Young
2013-04-09 8:54 ` Harald Hoyer
1 sibling, 0 replies; 6+ messages in thread
From: Dave Young @ 2013-04-09 3:04 UTC (permalink / raw)
To: Baoquan He
Cc: initramfs-u79uwXL29TY76Z2rM5mHXA, harald-H+wXaHxf7aLQT0dZR+AlfA
On 04/08/2013 05:47 PM, Baoquan He wrote:
> If bootdev is logical interface like bond, bridge or vlan, we need
> wait them up.
>
> Signed-off-by: Baoquan He <bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> ---
> modules.d/40network/net-genrules.sh | 11 ++++++++++-
> 1 files changed, 10 insertions(+), 1 deletions(-)
>
> diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh
> index 05fa5f3..be2f811 100755
> --- a/modules.d/40network/net-genrules.sh
> +++ b/modules.d/40network/net-genrules.sh
> @@ -25,6 +25,7 @@ fi
> if [ -e /tmp/bridge.info ]; then
> . /tmp/bridge.info
> IFACES="$IFACES ${ethnames%% *}"
> + MASTER_IFACES="$MASTER_IFACES $bridgename"
> fi
>
> # bond: attempt only the defined interface (override bridge defines)
> @@ -35,16 +36,19 @@ fi
> . "$i"
> # It is enough to fire up only one
> IFACES="$IFACES ${bondslaves%% *}"
> + MASTER_IFACES="$MASTER_IFACES ${bondname}"
> done
>
> if [ -e /tmp/team.info ]; then
> . /tmp/team.info
> IFACES="$IFACES ${teamslaves}"
> + MASTER_IFACES="$MASTER_IFACES ${teammaster}"
> fi
>
> if [ -e /tmp/vlan.info ]; then
> . /tmp/vlan.info
> IFACES="$IFACES $phydevice"
> + MASTER_IFACES="$MASTER_IFACES ${vlanname}"
> fi
>
> if [ -z "$IFACES" ]; then
> @@ -56,7 +60,7 @@ fi
> fi
>
> ifup='/sbin/ifup $env{INTERFACE}'
> - [ -z "$netroot" ] && ifup="$ifup -m"
> + [ -z "$netroot" ] && ifup="$ifup -m"
Please remove change in above line.., otherwise these two patches looks
good to me.
>
> # BOOTIF says everything, use only that one
> BOOTIF=$(getarg 'BOOTIF=')
> @@ -74,6 +78,11 @@ fi
> fi
> done
>
> + for iface in $MASTER_IFACES; do
> + if [ "$bootdev" = "$iface" ]; then
> + echo "[ -f /tmp/setup_net_${iface}.ok ]" >$hookdir/initqueue/finished/wait-$iface.sh
> + fi
> + done
> # Default: We don't know the interface to use, handle all
> # Fixme: waiting for the interface as well.
> else
>
--
Thanks
Dave
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] network: support multiple bonding interfaces
[not found] ` <99a1ec144499cee623d5096ce9873bf385616c16.1365413867.git.bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
@ 2013-04-09 8:53 ` Harald Hoyer
0 siblings, 0 replies; 6+ messages in thread
From: Harald Hoyer @ 2013-04-09 8:53 UTC (permalink / raw)
To: Baoquan He; +Cc: initramfs-u79uwXL29TY76Z2rM5mHXA
Am 08.04.2013 11:47, schrieb Baoquan He:
> From: Harald Hoyer <harald-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
>
> Currently dracut only support 1 bond, namyly bond0 by default. However multiple
> bonds configuration may be needed. For example in kdump, in 1st kernel, more
> than one bonds may be configured, and bondX other than bond0 is used as output
> interface to remote host which will store dump core. This patch can solve this
> problem, to write real bond information to initramfs, 2nd kdump kernel will
> use it to create the relevant bondX interface.
>
> Tested-by: Baoquan He <bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> Signed-off-by: Baoquan He <bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> ---
> modules.d/40network/ifup.sh | 15 ++++++++++-----
> modules.d/40network/net-genrules.sh | 9 ++++++---
> modules.d/40network/parse-bond.sh | 6 +++---
> modules.d/40network/parse-bridge.sh | 6 ------
> modules.d/45ifcfg/write-ifcfg.sh | 9 +++++----
> 5 files changed, 24 insertions(+), 21 deletions(-)
>
applied
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] Wait for logical interface to be up
[not found] ` <9100182be23fd2ec4e42f0ba667bc09cab6ca056.1365413867.git.bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-04-09 3:04 ` Dave Young
@ 2013-04-09 8:54 ` Harald Hoyer
1 sibling, 0 replies; 6+ messages in thread
From: Harald Hoyer @ 2013-04-09 8:54 UTC (permalink / raw)
To: Baoquan He; +Cc: initramfs-u79uwXL29TY76Z2rM5mHXA
Am 08.04.2013 11:47, schrieb Baoquan He:
> If bootdev is logical interface like bond, bridge or vlan, we need
> wait them up.
>
> Signed-off-by: Baoquan He <bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> ---
> modules.d/40network/net-genrules.sh | 11 ++++++++++-
> 1 files changed, 10 insertions(+), 1 deletions(-)
>
applied
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-04-09 8:54 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-08 9:47 [PATCH v2 0/2] support multiple bonding interfaces Baoquan He
[not found] ` <cover.1365413867.git.bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-04-08 9:47 ` [PATCH v2 1/2] network: " Baoquan He
[not found] ` <99a1ec144499cee623d5096ce9873bf385616c16.1365413867.git.bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-04-09 8:53 ` Harald Hoyer
2013-04-08 9:47 ` [PATCH v2 2/2] Wait for logical interface to be up Baoquan He
[not found] ` <9100182be23fd2ec4e42f0ba667bc09cab6ca056.1365413867.git.bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2013-04-09 3:04 ` Dave Young
2013-04-09 8:54 ` Harald Hoyer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox