[arch-projects] [RFC] [PATCH] [mkinitcpio] Cleanly stop udev >= 168 as recommended by upstream.

Dave Reisner d at falconindy.com
Mon May 2 00:22:12 EDT 2011


On Mon, May 02, 2011 at 12:40:14AM -0300, Gerardo Exequiel Pozzi wrote:
> On 05/02/2011 12:39 AM, Gerardo Exequiel Pozzi wrote:
> >N0: udev>= 168 is needed.
> >N1: I guess the order is correct (first cleanup then exit).
> >N2: device-mapper/LVM udev rules must be parsed for initramfs creation
> >     to add OPTIONS+="db_persist"
> >
> >> From udev NEWS:
> >The running udev daemon can now cleanly shut down with:
> >   udevadm control --exit
> >
> >Udev in initramfs should clean the state of the udev database
> >with: udevadm info --cleanup-db which will remove all state left
> >behind from events/rules in initramfs. If initramfs uses
> >--cleanup-db and device-mapper/LVM, the rules in initramfs need
> >to add OPTIONS+="db_persist" for all dm devices. This will
> >prevent removal of the udev database for these devices.
> >
> >Signed-off-by: Gerardo Exequiel Pozzi<vmlinuz386 at yahoo.com.ar>
> >---
> >  init |   12 ++++--------
> >  1 files changed, 4 insertions(+), 8 deletions(-)
> >
> >diff --git a/init b/init
> >index 7b81a1a..f586220 100644
> >--- a/init
> >+++ b/init
> >@@ -118,15 +118,11 @@ elif [ ! -x "/new_root${init}" ]; then
> >      launch_interactive_shell --exec
> >  fi
> >
> >-#Special handling if udev is running
> >-udevpid=$(/bin/pidof udevd)
> >-if [ -n "${udevpid}" ]; then
> >-    # Settle pending uevents, then kill udev
> >+# Stop udevd if is running
> >+if [ "${udevd_running}" -eq 1 ]; then
> >      /sbin/udevadm settle
> >-    /bin/kill ${udevpid}>  /dev/null 2>&1
> >-    while /bin/pidof udevd>/dev/null; do
> >-        sleep 0.1
> >-    done
> >+    /sbin/udevadm info --cleanup-db
> >+    /sbin/udevadm control --exit
> >  fi
> >
> >  for d in proc sys dev run; do
> This just keep settle command.
> 
> -- 
> Gerardo Exequiel Pozzi
> \cos^2\alpha + \sin^2\alpha = 1
> 

The settle is actually unnecessary here, as its called as part of the
udev hook.  I don't see a need to call it twice. On the other hand, I've
notice that dracut makes the call 'udevadm control --stop-exec-queue'
prior to shutting down udevd. Perhaps we should be using that instead?

dave


More information about the arch-projects mailing list