summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Tollerton <rich.tollerton@ni.com>2014-01-24 00:44:01 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-12-19 17:54:15 +0000
commit8847e33b12171a21b7c7e1241198080ad9ef9284 (patch)
tree65adff1013e45abd0a86917a9b835aa0afee02cf
parent9e588bbf9477d57f0a46d92ce11f8f891115496c (diff)
downloadopenembedded-core-8847e33b12171a21b7c7e1241198080ad9ef9284.tar.gz
openembedded-core-8847e33b12171a21b7c7e1241198080ad9ef9284.tar.bz2
openembedded-core-8847e33b12171a21b7c7e1241198080ad9ef9284.zip
udev-cache: invalidate on rules.d changes
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 <rich.tollerton@ni.com>
-rw-r--r--meta/recipes-core/udev/udev/init6
-rw-r--r--meta/recipes-core/udev/udev/udev-cache5
2 files changed, 11 insertions, 0 deletions
diff --git a/meta/recipes-core/udev/udev/init b/meta/recipes-core/udev/udev/init
index 32c677a8c0..94dbba37de 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 4d50876b64..571463fa01 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