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
 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

2015-03-24 Thread randy . e . witt
> 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

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
>>  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

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
 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