Patchwork [v2,01/12] udev-cache: Update cache tarball atomically

login
register
mail settings
Submitter Richard Tollerton
Date Aug. 22, 2014, 9:30 p.m.
Message ID <ad8654548b05e140dd50098eb8d258762bdb4059.1408742574.git.rich.tollerton@ni.com>
Download mbox | patch
Permalink /patch/78841/
State Accepted
Commit bd7fb7c3ca50b3eea2d173487f24b3006470f6df
Headers show

Comments

Richard Tollerton - Aug. 22, 2014, 9:30 p.m.
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>
---
 meta/recipes-core/udev/udev/udev-cache | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Patch

diff --git a/meta/recipes-core/udev/udev/udev-cache b/meta/recipes-core/udev/udev/udev-cache
index db5a513..c08cef2 100644
--- a/meta/recipes-core/udev/udev/udev-cache
+++ b/meta/recipes-core/udev/udev/udev-cache
@@ -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