* allow udev-cache to be disabled at runtime (using /etc/default/udev-cache);
* make cache invalidated if kernel, bootparams or device list changes; Signed-off-by: Otavio Salvador <[email protected]> --- meta/recipes-core/udev/udev.inc | 8 +++++++- meta/recipes-core/udev/udev/init | 15 ++++++++++++--- meta/recipes-core/udev/udev/udev-cache | 14 +++++++++++--- meta/recipes-core/udev/udev/udev-cache.default | 4 ++++ 4 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 meta/recipes-core/udev/udev/udev-cache.default diff --git a/meta/recipes-core/udev/udev.inc b/meta/recipes-core/udev/udev.inc index 0e571d6..e5fbe40 100644 --- a/meta/recipes-core/udev/udev.inc +++ b/meta/recipes-core/udev/udev.inc @@ -25,6 +25,7 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \ file://network.sh \ file://local.rules \ file://udev-cache \ + file://udev-cache.default \ file://init" inherit autotools pkgconfig update-rc.d @@ -58,7 +59,7 @@ FILES_libgudev = "${base_libdir}/libgudev*.so.* ${libdir}/libgudev*.so.*" FILES_libgudev-dbg = "${base_libdir}/.debug/libgudev*.so.* ${libdir}/.debug/libgudev*.so.*" FILES_libgudev-dev = "${includedir}/gudev* ${libdir}/libgudev*.so ${libdir}/libgudev*.la \ ${libdir}/libgudev*.a ${libdir}/pkgconfig/gudev*.pc" -FILES_udev-cache = "${sysconfdir}/init.d/udev-cache" +FILES_udev-cache = "${sysconfdir}/init.d/udev-cache ${sysconfdir}/default/udev-cache" FILES_udev-acl = "${base_libdir}/udev/udev-acl ${base_libdir}/udev/rules.d/70-acl.rules" @@ -72,6 +73,11 @@ do_install_append () { install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev install -m 0755 ${WORKDIR}/udev-cache ${D}${sysconfdir}/init.d/udev-cache + install -d ${D}${sysconfdir}/default + install -m 0755 ${WORKDIR}/udev-cache.default ${D}${sysconfdir}/default/udev-cache + + touch ${D}${sysconfdir}/udev/cache.data + install -d ${D}${sysconfdir}/udev/rules.d/ install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules diff --git a/meta/recipes-core/udev/udev/init b/meta/recipes-core/udev/udev/init index 6a4464c..f2c7f87 100644 --- a/meta/recipes-core/udev/udev/init +++ b/meta/recipes-core/udev/udev/init @@ -14,6 +14,7 @@ export TZ=/etc/localtime [ -d /sys/class ] || exit 1 [ -r /proc/mounts ] || exit 1 [ -x /sbin/udevd ] || exit 1 +[ -f /etc/default/udev-cache ] && . /etc/default/udev-cache [ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf kill_udevd() { @@ -35,9 +36,17 @@ LANG=C awk '$2 == "/dev" && ($3 == "tmpfs" || $3 == "devtmpfs") { exit 1 }' /pro [ -e /dev/shm ] || mkdir -m 1777 /dev/shm -if [ -e /etc/dev.tar ]; then - (cd /; tar xf /etc/dev.tar 2>&1 | grep -v 'time stamp' || true) - not_first_boot=1 +if [ "$DEVCACHE" != "" ]; then + # Ensure we are consistent to use the cache + echo -n > /dev/shm/cache.data + [ -x /bin/uname ] && /bin/uname -mrspv >> /dev/shm/cache.data + [ -r /proc/cmdline ] && cat /proc/cmdline >> /dev/shm/cache.data + [ -r /proc/devices ] && cat /proc/devices >> /dev/shm/cache.data + [ -r /proc/atags ] && cat /proc/atags >> /dev/shm/cache.data + if [ -e $DEVCACHE ] && cmp -s /dev/shm/cache.data /etc/udev/cache.data; then + (cd /; tar xf $DEVCACHE > /dev/null 2>&1) + not_first_boot=1 + fi fi # make_extra_nodes diff --git a/meta/recipes-core/udev/udev/udev-cache b/meta/recipes-core/udev/udev/udev-cache index 77bbda6..f6a43bf 100644 --- a/meta/recipes-core/udev/udev/udev-cache +++ b/meta/recipes-core/udev/udev/udev-cache @@ -9,12 +9,20 @@ # Short-Description: cache /dev to speedup the udev next boot ### END INIT INFO -[ -d /sys/class ] || exit 1 +export TZ=/etc/localtime + [ -r /proc/mounts ] || exit 1 [ -x /sbin/udevd ] || exit 1 +[ -d /sys/class ] || exit 1 + +[ -f /etc/default/udev-cache ] && . /etc/default/udev-cache -if [ ! -e /etc/dev.tar ]; then - (cd /; tar cf /etc/dev.tar dev) +if [ "$DEVCACHE" != "" ]; then + echo "Populating dev cache" + (cd /; tar cf "$DEVCACHE" dev) + mv /dev/shm/cache.data /etc/udev/cache.data +else + rm -f /dev/shm/cache.data fi exit 0 diff --git a/meta/recipes-core/udev/udev/udev-cache.default b/meta/recipes-core/udev/udev/udev-cache.default new file mode 100644 index 0000000..5c4937a --- /dev/null +++ b/meta/recipes-core/udev/udev/udev-cache.default @@ -0,0 +1,4 @@ +# Default for /etc/init.d/udev + +# Comment this out to disable device cache +DEVCACHE="/etc/dev.tar" -- 1.7.2.5 _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
