diff options
Diffstat (limited to 'sys-apps/openrc/files/openrc-0.8.3-ccwgroup.patch')
-rw-r--r-- | sys-apps/openrc/files/openrc-0.8.3-ccwgroup.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/sys-apps/openrc/files/openrc-0.8.3-ccwgroup.patch b/sys-apps/openrc/files/openrc-0.8.3-ccwgroup.patch new file mode 100644 index 00000000..14ecd5f8 --- /dev/null +++ b/sys-apps/openrc/files/openrc-0.8.3-ccwgroup.patch @@ -0,0 +1,57 @@ +From c427d3c1fec89f6a9281dccdc123bad73af80804 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger <vapier@gentoo.org> +Date: Tue, 28 Jun 2011 00:02:11 -0400 +Subject: [PATCH] net: ccwgroup: smooth up/down process + +We need to bring the link up ourselves after we've properly configured +the device. The common code tries to bring the link up itself, but it +does so before things are configured, and so it ends up failing. + +When shutting down, we need to wait for the kernel to finish destroying +the interface. Otherwise, when doing a restart, openrc is quick enough +to tell the kernel to destroy things, but then start trying to bring it +back up before the kernel has finished. + +X-Gentoo-Bug: 367467 +X-Gentoo-Bug-URL: http://bugs.gentoo.org/367467 +Signed-off-by: Mike Frysinger <vapier@gentoo.org> +--- + net/ccwgroup.sh | 14 ++++++++++++-- + 1 files changed, 12 insertions(+), 2 deletions(-) + +diff --git a/net/ccwgroup.sh b/net/ccwgroup.sh +index 248b159..60cd25f 100644 +--- a/net/ccwgroup.sh ++++ b/net/ccwgroup.sh +@@ -58,6 +58,11 @@ ccwgroup_pre_start() + echo "${val}" > /sys/devices/${ccw_type}/${first}/${var} + done + eend $? ++ ++ # Now that we've properly configured the device, we can run ++ # bring the interface up. Common code tried to do this already, ++ # but it failed because we didn't setup sysfs yet. ++ _up + } + + ccwgroup_pre_stop() +@@ -88,9 +93,14 @@ ccwgroup_post_stop() + local device="$(service_get_value ccwgroup_device)" + [ -z "${device}" ] && return 0 + local ccw_type="$(service_get_value ccwgroup_type)" ++ local path="/sys/devices/${ccw_type}/${device}" + + einfo "Disabling ccwgroup/${ccw_type} on ${IFACE}" +- echo "0" >/sys/devices/${ccw_type}/"${device}"/online +- echo "1" >/sys/devices/${ccw_type}/"${device}"/ungroup ++ if echo "0" >"${path}"/online && ++ echo "1" >"${path}"/ungroup ; then ++ # The device doesn't disappear right away which breaks ++ # restart, or a quick start up, so wait around. ++ while [ -e "${path}" ] ; do :; done ++ fi + eend $? + } +-- +1.7.5.3 + |