[OE-core] [PATCH 08/20] udev-cache: Create cache asynchronously
Richard Tollerton
rich.tollerton at ni.com
Mon Aug 4 21:18:08 UTC 2014
Otavio Salvador <otavio at 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.tollerton at ni.com>
More information about the Openembedded-core
mailing list