Presently, the cache is not regenerated if udev rules are modified, which may cause the cache to preserve an old configuration. To fix, include the size, mtime, and filename of all udev rules in the system configuration.
This change requires `stat`. If busybox supplies stat, CONFIG_FEATURE_STAT_FORMAT must be enabled. Signed-off-by: Richard Tollerton <[email protected]> --- meta/recipes-core/udev/udev/init | 6 ++++++ meta/recipes-core/udev/udev/udev-cache | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/meta/recipes-core/udev/udev/init b/meta/recipes-core/udev/udev/init index 32c677a..94dbba3 100644 --- a/meta/recipes-core/udev/udev/init +++ b/meta/recipes-core/udev/udev/init @@ -22,9 +22,14 @@ DEVCACHE_REGEN="/dev/shm/udev-regen" # create to request cache regen CMP_FILE_LIST="/proc/version /proc/cmdline /proc/devices" [ -f /proc/atags ] && CMP_FILE_LIST="$CMP_FILE_LIST /proc/atags" +# List of files whose metadata (size/mtime/name) will be included in cached +# system state. +META_FILE_LIST="lib/udev/rules.d/* etc/udev/rules.d/*" + # Command to compute system configuration. sysconf_cmd () { cat -- $CMP_FILE_LIST + stat -L -c '%s %Y %n' -- $META_FILE_LIST | awk -F/ '{print $1 " " $NF;}' } [ -f /etc/default/udev-cache ] && . /etc/default/udev-cache @@ -76,6 +81,7 @@ case "$1" in cat <<EOF udev: Not using udev cache because of changes detected in the following files: udev: $CMP_FILE_LIST +udev: $META_FILE_LIST udev: The udev cache will be regenerated. To identify the detected changes, udev: compare the cached sysconf at $SYSCONF_CACHED udev: against the current sysconf at $SYSCONF_TMP diff --git a/meta/recipes-core/udev/udev/udev-cache b/meta/recipes-core/udev/udev/udev-cache index 4d50876..571463f 100644 --- a/meta/recipes-core/udev/udev/udev-cache +++ b/meta/recipes-core/udev/udev/udev-cache @@ -25,9 +25,14 @@ DEVCACHE_REGEN="/dev/shm/udev-regen" # create to request cache regen CMP_FILE_LIST="/proc/version /proc/cmdline /proc/devices" [ -f /proc/atags ] && CMP_FILE_LIST="$CMP_FILE_LIST /proc/atags" +# List of files whose metadata (size/mtime/name) will be included in cached +# system state. +META_FILE_LIST="lib/udev/rules.d/* etc/udev/rules.d/*" + # Command to compute system configuration. sysconf_cmd () { cat -- $CMP_FILE_LIST + stat -L -c '%s %Y %n' -- $META_FILE_LIST | awk -F/ '{print $1 " " $NF;}' } [ -f /etc/default/udev-cache ] && . /etc/default/udev-cache -- 2.1.3 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
