Otavio Salvador <ota...@ossystems.com.br> writes: > I am not sure about this one. I see the value you are adding here but > I worry how often something can be connected during this process and > change the contents along the way. Did you see something as that > during your tests?
No, but point taken. I didn't really test "physical" hotplug during bootup -- and in particular, for this to be a persisting issue, the added/removed device must be removed/added during this boot -- but I suppose that is totally possible. This reflects an underlying race condition, starting at the computation of NEWDATA/OLDDATA in the udev initscript, and ending in the tarball creation in udev-cache. I suppose that we can mitigate this by spinning in udev-cache until the devcache stops changing...? Cheesy, untested, dirty RFC follows: diff --git a/meta/recipes-core/udev/udev/udev-cache b/meta/recipes-core/udev/udev/udev-cache index 9ad3b4d..3b744c5 100644 --- a/meta/recipes-core/udev/udev/udev-cache +++ b/meta/recipes-core/udev/udev/udev-cache @@ -28,6 +28,13 @@ fi [ -e "$DEVCACHE_CURRENT_SYSCONF" ] || exit 0 [ "${VERBOSE}" == "no" ] || echo "found; building cache." +# assume readfiles and CMP_FILE_LIST are copied from udev initscript +readfiles "$DEVCACHE_SYSCONF" +DATA2="$READDATA" + +while true; do + DATA1="$DATA2" + if [ ! `readlink -f /bin/tar` = "/bin/tar.tar" ]; then ( find /dev \( -type b -o -type c -o -type l \) -xdev | cut -c 2- | xargs tar czf "${DEVCACHE}.tmp" -C / $BUSYBOX_DEVCACHE_CREATE_OPTS && \ @@ -42,4 +49,13 @@ else ) & fi + readfiles $CMP_FILE_LIST + DATA2="$READDATA$RULELIST" + if [ "$DATA1" = "$DATA2" ]; then + break + else + echo "$DATA2" > "$DEVCACHE_CURRENT_SYSCONF" + fi +done + exit 0 > -- > Otavio Salvador O.S. Systems > http://www.ossystems.com.br http://code.ossystems.com.br > Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750 > -- -- Richard Tollerton <rich.toller...@ni.com> -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core