udev-cache: Update cache tarball atomically

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.

(From OE-Core rev: 5dbf43fe32a1cf259f9379a7d2c008260eabf3ac)

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>
This commit is contained in:
Richard Tollerton
2014-08-22 16:30:47 -05:00
committed by Richard Purdie
parent 8d59fca331
commit bd7fb7c3ca

View File

@@ -16,6 +16,7 @@ export TZ=/etc/localtime
[ -d /sys/class ] || exit 1
[ -f /etc/default/rcS ] && . /etc/default/rcS
DEVCACHE_TMP="/dev/shm/udev-cache-tmp.tar"
[ -f /etc/default/udev-cache ] && . /etc/default/udev-cache
if [ "$ROOTFS_READ_ONLY" = "yes" ]; then
@@ -25,7 +26,8 @@ fi
if [ "$DEVCACHE" != "" -a -e /dev/shm/udev.cache ]; then
echo "Populating dev cache"
(cd /; tar cf "$DEVCACHE" dev)
(cd /; tar cf "${DEVCACHE_TMP}" dev)
mv -f "${DEVCACHE_TMP}" "$DEVCACHE"
mv /dev/shm/udev.cache /etc/udev/cache.data
fi