Re: [OE-core] [PATCH 2/2] image.bbclass: Empty /var/volatile if it is a mount point
On Mon, Mar 23, 2015 at 5:28 PM, Randy Witt 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 > --- > 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
> On Mon, Mar 23, 2015 at 5:28 PM, Randy Witt > 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 >> --- >> 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
> 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 >> 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 >>> --- >>> 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
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 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 --- 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