Skip to contentSkip to conversation

udev-cache: take a read-only rootfs into consideration

PATCH Superseded [email protected] 2 participants 4 messages Jun 28, 2013

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

cover udev-cache: take a read-only rootfs into consideration

From: Chen Qi <[email protected]>

The following changes since commit 042203531b10b37ac9a8201b376f5dec403e51d8:

sanity.bbclass: Fix COREBASE sanity tests (2013-06-27 12:48:56 +0100)

are available in the git repository at:

git://git.pokylinux.org/poky-contrib ChenQi/udev-cache-readonly
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=ChenQi/udev-cache-readonly

Chen Qi (1):
udev-cache: take a read-only rootfs into consideration

 meta/recipes-core/udev/udev/init       |    5 +++--
 meta/recipes-core/udev/udev/udev-cache |    6 ++++++
 2 files changed, 9 insertions(+), 2 deletions(-)
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 1/1 udev-cache: take a read-only rootfs into consideration

From: Chen Qi <[email protected]>

In case of a read-only rootfs, no matter the /etc is read-only or it's bind mounted with tmpfs, the udev cache handling should be skipped, as the data cannot be persisted between reboots.

---
 meta/recipes-core/udev/udev/init       |    5 +++--
 meta/recipes-core/udev/udev/udev-cache |    6 ++++++
 2 files changed, 9 insertions(+), 2 deletions(-)
meta/recipes-core/udev/udev/init +3 -2
index 9b81700..38ea666 100644
@@ -18,6 +18,7 @@ export TZ=/etc/localtime
 [ -x @UDEVD@ ] || exit 1
 [ -f /etc/default/udev-cache ] && . /etc/default/udev-cache
 [ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
+[ -f /etc/default/rcS ] && . /etc/default/rcS
 
 readfile () {
    filename=$1
@@ -52,8 +53,8 @@ case "$1" in
     mount -a -t tmpfs 2>/dev/null
     mkdir -p /var/volatile/tmp
 
-    # cache handling
-    if [ "$DEVCACHE" != "" ]; then
+    # Cache handling. Skip cache handling in case of a read-only rootfs.
+    if [ "$ROOTFS_READ_ONLY" = "no" -a "$DEVCACHE" != "" ]; then
             readfile /proc/version
             VERSION="$READDATA"
             readfile /proc/cmdline
meta/recipes-core/udev/udev/udev-cache +6 -0
index 8a84fa9..3e0eff6 100644
@@ -15,8 +15,14 @@ export TZ=/etc/localtime
 [ -x @UDEVD@ ] || exit 1
 [ -d /sys/class ] || exit 1
 
+[ -f /etc/default/rcS ] && . /etc/default/rcS
 [ -f /etc/default/udev-cache ] && . /etc/default/udev-cache
 
+if [ "$ROOTFS_READ_ONLY" = "yes" ]; then
+    [ "$VERBOSE" != "no" ] && echo "read-only rootfs, skip udev-cache"
+    exit 0
+fi
+
 if [ "$DEVCACHE" != "" -a -e /dev/shm/udev.cache ]; then
 	echo "Populating dev cache"
 	(cd /; tar cf "$DEVCACHE" dev)
Signature · 1 line
1.7.9.5
#2 lore raw
Quoted 25 lines · On 06/27/2013 10:00 PM, [email protected] wrote:

From: Chen Qi <[email protected]>

In case of a read-only rootfs, no matter the /etc is read-only or it's bind mounted with tmpfs, the udev cache handling should be skipped, as the data cannot be persisted between reboots.

---
  meta/recipes-core/udev/udev/init       |    5 +++--
  meta/recipes-core/udev/udev/udev-cache |    6 ++++++
  2 files changed, 9 insertions(+), 2 deletions(-)
meta/recipes-core/udev/udev/init +1 -0
index 9b81700..38ea666 100644
@@ -18,6 +18,7 @@ export TZ=/etc/localtime
  [ -x @UDEVD@ ] || exit 1
  [ -f /etc/default/udev-cache ] && . /etc/default/udev-cache
  [ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
+[ -f /etc/default/rcS ] && . /etc/default/rcS
 
  readfile () {
     filename=$1

meta/recipes-core/udev/udev/init case "$1" in · line 60

Quoted 10 lines
meta/recipes-core/udev/udev/init +2 -2
@@ -52,8 +53,8 @@ case "$1" in
      mount -a -t tmpfs 2>/dev/null
      mkdir -p /var/volatile/tmp
 
-    # cache handling
-    if [ "$DEVCACHE" != "" ]; then
+    # Cache handling. Skip cache handling in case of a read-only rootfs.
+    if [ "$ROOTFS_READ_ONLY" = "no" -a "$DEVCACHE" != "" ]; then
              readfile /proc/version
              VERSION="$READDATA"
              readfile /proc/cmdline

Do you think it would be possible in a fix embedded device to have the udev cache created and installed in a read-only FS?

Sau!

Quoted 20 lines
meta/recipes-core/udev/udev/udev-cache +6 -0
index 8a84fa9..3e0eff6 100644
@@ -15,8 +15,14 @@ export TZ=/etc/localtime
  [ -x @UDEVD@ ] || exit 1
  [ -d /sys/class ] || exit 1
 
+[ -f /etc/default/rcS ] && . /etc/default/rcS
  [ -f /etc/default/udev-cache ] && . /etc/default/udev-cache
 
+if [ "$ROOTFS_READ_ONLY" = "yes" ]; then
+    [ "$VERBOSE" != "no" ] && echo "read-only rootfs, skip udev-cache"
+    exit 0
+fi
+
  if [ "$DEVCACHE" != "" -a -e /dev/shm/udev.cache ]; then
  	echo "Populating dev cache"
  	(cd /; tar cf "$DEVCACHE" dev)
author
#3 lore raw
Quoted 39 lines · Saul Wold
Quoted 31 lines · On 06/27/2013 10:00 PM, [email protected] wrote:

From: Chen Qi <[email protected]>

In case of a read-only rootfs, no matter the /etc is read-only or it's bind mounted with tmpfs, the udev cache handling should be skipped, as the data cannot be persisted between reboots.

---
  meta/recipes-core/udev/udev/init       |    5 +++--
  meta/recipes-core/udev/udev/udev-cache |    6 ++++++
  2 files changed, 9 insertions(+), 2 deletions(-)
meta/recipes-core/udev/udev/init +2 -2
index 9b81700..38ea666 100644
@@ -18,6 +18,7 @@ export TZ=/etc/localtime
  [ -x @UDEVD@ ] || exit 1
  [ -f /etc/default/udev-cache ] && . /etc/default/udev-cache
  [ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
+[ -f /etc/default/rcS ] && . /etc/default/rcS
 
  readfile () {
     filename=$1
@@ -52,8 +53,8 @@ case "$1" in
      mount -a -t tmpfs 2>/dev/null
      mkdir -p /var/volatile/tmp
 
-    # cache handling
-    if [ "$DEVCACHE" != "" ]; then
+    # Cache handling. Skip cache handling in case of a read-only 
Quoted 5 lines

rootfs.
+ if [ "$ROOTFS_READ_ONLY" = "no" -a "$DEVCACHE" != "" ]; then
readfile /proc/version
VERSION="$READDATA"
readfile /proc/cmdline

Do you think it would be possible in a fix embedded device to have the udev cache created and installed in a read-only FS?

Quoted 2 lines

Sau!

Thanks for pointing it out.
Yes, you're right.
No matter how the cache is installed, if the $DEVCACHE file exists and the $READDATA matches, we could use the cache. I'll send out a V2.

//Chen Qi

Quoted 22 lines
Quoted 20 lines
meta/recipes-core/udev/udev/udev-cache +6 -0
index 8a84fa9..3e0eff6 100644
@@ -15,8 +15,14 @@ export TZ=/etc/localtime
  [ -x @UDEVD@ ] || exit 1
  [ -d /sys/class ] || exit 1
 
+[ -f /etc/default/rcS ] && . /etc/default/rcS
  [ -f /etc/default/udev-cache ] && . /etc/default/udev-cache
 
+if [ "$ROOTFS_READ_ONLY" = "yes" ]; then
+    [ "$VERBOSE" != "no" ] && echo "read-only rootfs, skip udev-cache"
+    exit 0
+fi
+
  if [ "$DEVCACHE" != "" -a -e /dev/shm/udev.cache ]; then
      echo "Populating dev cache"
      (cd /; tar cf "$DEVCACHE" dev)