On 03/24/2015 08:53 AM, Khem Raj wrote:
On Mar 24, 2015, at 8:46 AM, [email protected] wrote:
On Mon, Mar 23, 2015 at 5:28 PM, Randy Witt
<[email protected]> wrote:
If /var/volatile is a mount point it shouldn't contain any files before
mount time. If files are there, they will no longer be able to be
accessed
once the tmpfs gets mounted at /var/volatile.
why not use copy-bind when mounting it second time as tmpfs ?
Khem, could you elaborate? I'm not sure I know the mechanism to which you
are referring.
copy bind will copy the contents from old place to new mount. Then hopefully
you do not lose the content
that was already there before remount happens see VOLATILE_BINDS implementation.
I like this idea, but considering that /var/volatile/log/journal is within the
mountpoint I'm not sure how it could work. The contents will already be hidden
by the mount of /var/volatile before the files can be copied.
Perhaps I am misunderstanding?
This problem can be seen for instance when systemd creates
/var/volatile/log/journal as part of its package installation. It then
assumes the journal is persistent even though /var/volatile/log/journal
goes away shortly thereafter.
This change makes sure that there are no files in /var/volatile if it is
to be used as a mount point.
[Yocto #7388]
Signed-off-by: Randy Witt <[email protected]>
---
meta/classes/image.bbclass | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 89eb5f3..dfedf9d 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -181,6 +181,8 @@ POSTINST_LOGFILE ?=
"${localstatedir}/log/postinstall.log"
SYSTEMD_DEFAULT_TARGET ?= '${@bb.utils.contains("IMAGE_FEATURES",
"x11-base", "graphical.target", "multi-user.target", d)}'
ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("DISTRO_FEATURES",
"systemd", "set_systemd_default_target; ", "", d)}'
+ROOTFS_POSTPROCESS_COMMAND += 'empty_var_volatile;'
+
# some default locales
IMAGE_LINGUAS ?= "de-de fr-fr en-gb"
@@ -377,6 +379,20 @@ set_systemd_default_target () {
fi
}
+# If /var/volatile is not empty, we have seen problems where programs
such as the
+# journal make assumptions based on the contents of /var/volatile. The
journal
+# would then write to /var/volatile before it was mounted, thus hiding
the
+# items previously written.
+#
+# This change is to attempt to fix those types of issues in a way that
doesn't
+# affect users that may not be using /var/volatile.
+empty_var_volatile () {
+ match=`awk '$1 !~ "#" && $2 ~ /\/var\/volatile/{print $2}'
${IMAGE_ROOTFS}/etc/fstab 2> /dev/null`
+ if [ -n "$match" ]; then
+ find ${IMAGE_ROOTFS}/var/volatile -mindepth 1 -delete
+ fi
+}
+
# Turn any symbolic /sbin/init link into a file
remove_init_link () {
if [ -h ${IMAGE_ROOTFS}/sbin/init ]; then
--
1.9.3
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core