[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 15:53:27 UTC 2015


> On Mar 24, 2015, at 8:46 AM, randy.e.witt at linux.intel.com wrote:
> 
>> 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 ?
>> 
> 
> 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.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