aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/udev/udev/udev-cache
AgeCommit message (Collapse)Author
2015-01-27udev-cache: avoid using '-L' for statChenQi/udev-cache-statChen Qi
stat command from stat package doesn't support '-L' option, so avoid using it to get rid of boot errors like below. Populating dev cache stat: invalid option -- 'L' Usage: stat [-l] [-f] [-s] [-v] [-h] [-t] [-c format] file1 [file2 ...] [YOCTO #7210] Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
2014-12-19udev-cache: refactor conditionals and error handlingRichard Tollerton
Most of /etc/init.d/udev-cache is in a conditional block which can be replaced by a `[ ... ] || exit 0` to reduce nesting. This also provides an opportunity to add some additional messages when VERBOSE is set. Capture and report errors encountered in the cache generation process, using set -e and trap EXIT. These errors were previously being ignored. Signed-off-by: Richard Tollerton <rich.tollerton@ni.com>
2014-12-19udev-cache: Update cache asynchronouslyRichard Tollerton
Don't hold up the boot while the cache is being updated. Signed-off-by: Richard Tollerton <rich.tollerton@ni.com> Signed-off-by: Ben Shelton <ben.shelton@ni.com> Acked-by: Gratian Crisan <gratian.crisan@ni.com>
2014-12-19udev-cache: invalidate on rules.d changesRichard Tollerton
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>
2014-12-19udev-cache: refactor sysconf generationRichard Tollerton
The current system configuration needs to be generated both inside udev (to compare against the cached system configuration) and udev-cache (to regenerate the cached system configuration). Use a single function definition for this task, duplicated across both initscripts. This also allows administrators to modify it for machine-specific requirements. Signed-off-by: Richard Tollerton <rich.tollerton@ni.com>
2014-12-19udev-cache: don't generate sysconf twiceRichard Tollerton
The udev initscript signals udev-cache to run by generating a new sysconf; but udev-cache now overwrites that with its own copy. To eliminate the needless sysconf generating in udev, we instead trigger udev-cache to run by touching a new file $DEVCACHE_REGEN. Signed-off-by: Richard Tollerton <rich.tollerton@ni.com>
2014-12-19udev-cache: replace readfiles() with cmpRichard Tollerton
Currently, udev-cache system configurations are compared as shell string variables, read into memory with the readfiles() function. This is more complex, and significantly (27-41%) slower, than comparing them using `cmp`. (Performance was verified on both Cortex-A9 and Intel Nehalem systems.) So just use cmp. This requires a few other small changes: exclude /proc/atags from CMP_FILE_LIST if it doesn't exist to avoid errors in `cat` and `cmp`. `cmp -q` doesn't exist in busybox, so instead, redirect output to /dev/null. Signed-off-by: Richard Tollerton <rich.tollerton@ni.com>
2014-12-19udev-cache: stop race between sysconf and cache generationRichard Tollerton
The validity of the udev cache is determined by the sysconf file (/etc/udev/cache.data). Currently, there is a substantial delay between sysconf generation in /etc/init.d/udev and cache generation in /etc/init.d/udev-cache. If a hotplug event arrives in the middle of this, then the sysconf will be out of date with respect to the cache. The solution is two-pronged. First, we minimize the race window by regenerating the sysconf immediately before the cache, in /etc/init.d/udev-cache. This allows us to kill the race entirely by stopping the udev event queue while the sysconf and cache are being generated. Signed-off-by: Richard Tollerton <rich.tollerton@ni.com>
2014-08-23udev-cache: parametrize sysconf file pathsRichard Tollerton
The udev-cache facility uses files that represent system states, to ensure that the cache tarball is valid to apply. These paths were hardcoded in several places; collect them into SYSCONF_CACHED and SYSCONF_TMP. Signed-off-by: Richard Tollerton <rich.tollerton@ni.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-08-23udev-cache: omit sockets and filesystems mounted under /devRichard Tollerton
Archiving sockets causes tar to report an error and return a nonzero exit status. Archiving a mounted filesystem is harmless, but may greatly bloat the size of the cache tarball, and wastes time on boot. To fix these issues, use `find` to only include the files we want, which are the file types that udev will create (block/char devices and symlinks) that are on the same filesystem as /dev. While we're at it, remove a subshell by archiving /dev as an absolute path. However, `tar` will complain about stripping the leading slash on stderr. To inhibit this, `cut` out the leading slash. An alternative solution is to use `tar --exclude`, but that is modestly more brittle, since we'd need to explicitly list every socket and filesystem to exclude. Note that `tar --one-file-system` is GNU-specific, and tar implementations generally have nothing equivalent to `find -type`. If using busybox `find`, this change requires CONFIG_FEATURE_FIND_TYPE=y and CONFIG_FEATURE_FIND_XDEV=y. If using busybox `tar`, this change requires CONFIG_FEATURE_TAR_FROM=y. Signed-off-by: Richard Tollerton <rich.tollerton@ni.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-08-23udev-cache: Compress the cacheRichard Tollerton
$DEVCACHE is observed to be 100k uncompressed; compressing it reduces its size to ~5k. But compress it outside of `tar` so that archival operation takes as little time as possible, to minimize the risk of devices being created/removed during execution. Signed-off-by: Richard Tollerton <rich.tollerton@ni.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-08-23udev-cache: Update cache tarball atomicallyRichard Tollerton
Overwriting the tarball in-place could cause a partial write, if the system stops at an inopportune time. This is mitigated by first writing to a temporary file, then moving that file on top of the final location. Signed-off-by: Richard Tollerton <rich.tollerton@ni.com> Signed-off-by: Ben Shelton <ben.shelton@ni.com> Acked-by: Gratian Crisan <gratian.crisan@ni.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2013-07-02udev-cache: take a read-only rootfs into considerationChen Qi
In case of a read-only rootfs, we skip the process of generating udev cache, as the data cannot be persisted between reboots. However, it's possbile that the $DEVCACHE (default to /etc/dev.tar) exists in a read-only rootfs, no matter how it's generated or installed. In such situation, we try to use $DEVCACHE if possible. Besides the basic changes in the logic of udev cache handling, this patch also adds code to output more information if the udev cache is not used and VERBOSE enabled. This patch also changes the readfile function to readfiles function so that it could handle more than one file at once. Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-06-25udev-cache: fix to use udev-cache correctlyChen Qi
Previouly, the udev-cache has no real effect even if it's installed into the system. The key problem here is that at first boot, the /etc/dev.tar is not present, thus resulting /dev/shm/udev.cache not created on first boot even if udev-cache is enabled. This patch fixes this problem. The /dev/shm/udev.cache will be created if necessary, that is, on first boot or when some part of the system is changed. In the latter case, the udev cache may not be valid. [YOCTO #4738] Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2013-04-09udev: fix init script for the location of udevdSaul Wold
Ensure we can update the script base don the location of the udevd installation Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-10-25udev: upgrade to 182Alexandru DAMIAN
This is the final upgrade of udev. Futher upgrades will only come in conjunction with systemd. The v4l1 removal patch is deprecated as the bug is fixed inside udev. There is a new patch fixing the path for default sh interpreter. New debug binaries are generated, and udev.inc is modified to package those correctly. The install locations changed for udevd and udevadm, so the scripts are updated accordingly. (From OE-Core rev: 3cbe52b94c4d559a037347ac419fafee5af84fe6) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Conflicts: meta/recipes-core/udev/udev_164.bb sgw - Fixed up DEPENDS += and added some OECONF options that where in the meta-oe version and make sense to be included. Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-02-02udev: improve udev-cache robustnessOtavio Salvador
* 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 <otavio@ossystems.com.br>
2012-01-02udev: reorganize files of 164 versionOtavio Salvador
We merged both files and udev-164 directory onto a single directory and renamed udev-new.inc onto udev.inc as we have a single version of udev now. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>