Re: [OE-core] [PATCH 2/2] image.bbclass: Empty /var/volatile if it is a mount point

2015-03-24 Thread randy . e . witt
 On Mon, Mar 23, 2015 at 5:28 PM, Randy Witt
 randy.e.w...@linux.intel.com 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.


 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 randy.e.w...@linux.intel.com
 ---
  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
 Openembedded-core@lists.openembedded.org
 http://lists.openembedded.org/mailman/listinfo/openembedded-core


-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 2/2] image.bbclass: Empty /var/volatile if it is a mount point

2015-03-24 Thread Randy Witt

On 03/24/2015 08:53 AM, Khem Raj wrote:



On Mar 24, 2015, at 8:46 AM, randy.e.w...@linux.intel.com wrote:


On Mon, Mar 23, 2015 at 5:28 PM, Randy Witt
randy.e.w...@linux.intel.com 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 randy.e.w...@linux.intel.com
---
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
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core








--
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 2/2] image.bbclass: Empty /var/volatile if it is a mount point

2015-03-24 Thread Khem Raj

 On Mar 24, 2015, at 8:46 AM, randy.e.w...@linux.intel.com wrote:
 
 On Mon, Mar 23, 2015 at 5:28 PM, Randy Witt
 randy.e.w...@linux.intel.com 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.

 
 
 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 randy.e.w...@linux.intel.com
 ---
 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
 Openembedded-core@lists.openembedded.org
 http://lists.openembedded.org/mailman/listinfo/openembedded-core
 
 

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


Re: [OE-core] [PATCH 2/2] image.bbclass: Empty /var/volatile if it is a mount point

2015-03-23 Thread Khem Raj
On Mon, Mar 23, 2015 at 5:28 PM, Randy Witt
randy.e.w...@linux.intel.com 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 ?


 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 randy.e.w...@linux.intel.com
 ---
  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
 Openembedded-core@lists.openembedded.org
 http://lists.openembedded.org/mailman/listinfo/openembedded-core
-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH 2/2] image.bbclass: Empty /var/volatile if it is a mount point

2015-03-23 Thread Randy Witt
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.

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 randy.e.w...@linux.intel.com
---
 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
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core