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

Khem Raj raj.khem at gmail.com
Tue Mar 24 05:14:34 UTC 2015


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



More information about the Openembedded-core mailing list