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@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