[udev] udev.spec: fixed pre/post udev kill loop
Harald Hoyer
harald at fedoraproject.org
Mon Dec 6 09:20:53 UTC 2010
commit 15fa57fca0f4a9d31950a71f325f0638bdd329c1
Author: Harald Hoyer <harald at redhat.com>
Date: Mon Dec 6 09:50:38 2010 +0100
udev.spec: fixed pre/post udev kill loop
udev.spec | 58 +++++++++++++++++++++++++++++++++++-----------------------
1 files changed, 35 insertions(+), 23 deletions(-)
---
diff --git a/udev.spec b/udev.spec
index 5ca3750..823fa5d 100644
--- a/udev.spec
+++ b/udev.spec
@@ -7,7 +7,7 @@
Summary: A rule-based device node and kernel event manager
Name: udev
Version: 164
-Release: 5%{?dist}
+Release: 6%{?dist}
License: GPLv2+
Group: System Environment/Base
Provides: udev-persistent = %{version}-%{release}
@@ -181,17 +181,24 @@ install -m 0755 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/udev-post
%preun
if [ "$1" -eq 0 -a -f %{_initrddir}/udev ]; then
- if [ -x /sbin/pidof ]; then
- pid=$(/sbin/pidof -c udevd)
- if [ -n "$pid" ]; then
- kill $pid
- fi
- fi
- /sbin/chkconfig --del udev
+ if test -x /usr/bin/stat -a \
+ "$(/usr/bin/stat -Lc '%%D-%%i' /)" = "$(/usr/bin/stat -Lc '%%D-%%i' /proc/1/root)"; then
+ if [ -x /sbin/pidof ]; then
+ pid=$(/sbin/pidof -c udevd)
+ while [ -n "$pid" ]; do
+ for p in $pid; do
+ kill $hard $p 2>/dev/null
+ done
+ sleep 0.2
+ pid=$(/sbin/pidof -c udevd)
+ hard="-9"
+ done
+ fi
+ fi
+ /sbin/chkconfig --del udev
fi
if [ "$1" -eq 0 ]; then
- /sbin/chkconfig --del udev-post
-# /usr/bin/systemd-install --system --realize disable udev.service >/dev/null 2>&1 || :
+ /sbin/chkconfig --del udev-post
fi
exit 0
@@ -203,19 +210,21 @@ getent group floppy >/dev/null || /usr/sbin/groupadd -g 19 floppy || :
# kill daemon if we are not in a chroot
if test -f /proc/1/exe -a -d /proc/1/root; then
- if test -x /usr/bin/stat -a "$(/usr/bin/stat -Lc '%%D-%%i' /)" = "$(/usr/bin/stat -Lc '%%D-%%i' /proc/1/root)"; then
- if test -x /sbin/udevd -a -x /sbin/pidof ; then
- /sbin/udevadm control --stop-exec-queue
- pid=$(/sbin/pidof -c udevd)
- while [ -n "$pid" ]; do
- for p in $pid; do
- kill $hard $p;
- done
- pid=$(/sbin/pidof -c udevd)
- hard="-9"
- done
- fi
- fi
+ if test -x /usr/bin/stat -a \
+ "$(/usr/bin/stat -Lc '%%D-%%i' /)" = "$(/usr/bin/stat -Lc '%%D-%%i' /proc/1/root)"; then
+ if test -x /sbin/udevd -a -x /sbin/pidof ; then
+ /sbin/udevadm control --stop-exec-queue
+ pid=$(/sbin/pidof -c udevd)
+ while [ -n "$pid" ]; do
+ for p in $pid; do
+ kill $hard $p 2>/dev/null
+ done
+ sleep 0.2
+ pid=$(/sbin/pidof -c udevd)
+ hard="-9"
+ done
+ fi
+ fi
fi
exit 0
@@ -359,6 +368,9 @@ rm -rf $RPM_BUILD_ROOT
%attr(0644,root,root) %{_libdir}/pkgconfig/gudev-1.0*
%changelog
+* Mon Dec 06 2010 Harald Hoyer <harald at redhat.com> 164-6
+- fixed kill loop
+
* Thu Nov 25 2010 Bastien Nocera <bnocera at redhat.com> 164-5
- Add patches to fix touchpad toggle key handling
More information about the scm-commits
mailing list