diff mbox series

[v3,1/3] overlayfs: Fix the QA skip for ignored mounts

Message ID 20260114185508.380709-2-uvv.mail@gmail.com
State New
Headers show
Series Overlayfs improvements | expand

Commit Message

Vyacheslav Yurkov Jan. 14, 2026, 6:54 p.m. UTC
From: Vyacheslav Yurkov <uvv.mail@gmail.com>

The supressing of QA check for mounts should happens twice, at parsing stage
and at rootfs postprocessing. If the mount point is configured to be skipped,
but it is still present in the configuration (machine or distro), then the
parsing would complain.

Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com>
---
 meta/lib/oe/overlayfs.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Paul Barker Jan. 15, 2026, 1:41 p.m. UTC | #1
On Wed, 2026-01-14 at 18:54 +0000, Vyacheslav Yurkov via
lists.openembedded.org wrote:
> From: Vyacheslav Yurkov <uvv.mail@gmail.com>
> 
> The supressing of QA check for mounts should happens twice, at parsing stage
> and at rootfs postprocessing. If the mount point is configured to be skipped,
> but it is still present in the configuration (machine or distro), then the
> parsing would complain.

Thanks for respinning these patches.

I'm still unsure why the check is being performed twice. Are we checking
for different errors at parse time and rootfs time?

Also, can we convert this to fit in our existing QA framework so that it
is controlled by the WARN_QA/ERROR_QA variables?

> 
> Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com>
> ---
>  meta/lib/oe/overlayfs.py | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/lib/oe/overlayfs.py b/meta/lib/oe/overlayfs.py
> index 5a5ea03d45..3805746d90 100644
> --- a/meta/lib/oe/overlayfs.py
> +++ b/meta/lib/oe/overlayfs.py
> @@ -33,7 +33,8 @@ def unitFileList(d):
>      # check that we have required mount points set first
>      requiredMountPoints = d.getVarFlags('OVERLAYFS_WRITABLE_PATHS')
>      for mountPoint in requiredMountPoints:
> -        if mountPoint not in overlayMountPoints:
> +        qaSkip = (d.getVarFlag("OVERLAYFS_QA_SKIP", mountPoint) or "").split()
> +        if mountPoint not in overlayMountPoints and not "mount-configured" in qaSkip:
>              bb.fatal("Missing required mount point for OVERLAYFS_MOUNT_POINT[%s] in your MACHINE configuration" % mountPoint)
>  
>      for mountPoint in overlayMountPoints:
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#229369): https://lists.openembedded.org/g/openembedded-core/message/229369
> Mute This Topic: https://lists.openembedded.org/mt/117266570/1826184
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [paul@pbarker.dev]
> -=-=-=-=-=-=-=-=-=-=-=-
> 

Best regards,
Vyacheslav Yurkov Jan. 15, 2026, 9:18 p.m. UTC | #2
This is actually a good point, but I'm not sure how WARN_QA/ERROR_QA can 
be utilized here. WARN_QA/ERROR_QA expects one keyword, but 
OVERLAYFS_QA_SKIP expects a flag per mount unit. If we simplify it to 
WARN_QA/ERROR_QA, then we enable/disable the QA for all mount units. 
This will be a breaking change though, but it sounds like it might 
simplify things a bit. Do you think that would be better to use 
WARN_QA/ERROR_QA instead of current mechanism?

As for the check performed twice question. The file list is populated / 
expanded at the parsing stage, but the actual QA is performed at the 
rootfs postprocessing, because the overlayfs class works on a recipe 
basis, so to check if everything is provided the whole file system is 
needed.

Slava

On 15.01.2026 14:41, Paul Barker wrote:
> On Wed, 2026-01-14 at 18:54 +0000, Vyacheslav Yurkov via
> lists.openembedded.org wrote:
>> From: Vyacheslav Yurkov <uvv.mail@gmail.com>
>>
>> The supressing of QA check for mounts should happens twice, at parsing stage
>> and at rootfs postprocessing. If the mount point is configured to be skipped,
>> but it is still present in the configuration (machine or distro), then the
>> parsing would complain.
> Thanks for respinning these patches.
>
> I'm still unsure why the check is being performed twice. Are we checking
> for different errors at parse time and rootfs time?
>
> Also, can we convert this to fit in our existing QA framework so that it
> is controlled by the WARN_QA/ERROR_QA variables?
>
>> Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com>
>> ---
>>   meta/lib/oe/overlayfs.py | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/meta/lib/oe/overlayfs.py b/meta/lib/oe/overlayfs.py
>> index 5a5ea03d45..3805746d90 100644
>> --- a/meta/lib/oe/overlayfs.py
>> +++ b/meta/lib/oe/overlayfs.py
>> @@ -33,7 +33,8 @@ def unitFileList(d):
>>       # check that we have required mount points set first
>>       requiredMountPoints = d.getVarFlags('OVERLAYFS_WRITABLE_PATHS')
>>       for mountPoint in requiredMountPoints:
>> -        if mountPoint not in overlayMountPoints:
>> +        qaSkip = (d.getVarFlag("OVERLAYFS_QA_SKIP", mountPoint) or "").split()
>> +        if mountPoint not in overlayMountPoints and not "mount-configured" in qaSkip:
>>               bb.fatal("Missing required mount point for OVERLAYFS_MOUNT_POINT[%s] in your MACHINE configuration" % mountPoint)
>>   
>>       for mountPoint in overlayMountPoints:
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#229369): https://lists.openembedded.org/g/openembedded-core/message/229369
>> Mute This Topic: https://lists.openembedded.org/mt/117266570/1826184
>> Group Owner: openembedded-core+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [paul@pbarker.dev]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
diff mbox series

Patch

diff --git a/meta/lib/oe/overlayfs.py b/meta/lib/oe/overlayfs.py
index 5a5ea03d45..3805746d90 100644
--- a/meta/lib/oe/overlayfs.py
+++ b/meta/lib/oe/overlayfs.py
@@ -33,7 +33,8 @@  def unitFileList(d):
     # check that we have required mount points set first
     requiredMountPoints = d.getVarFlags('OVERLAYFS_WRITABLE_PATHS')
     for mountPoint in requiredMountPoints:
-        if mountPoint not in overlayMountPoints:
+        qaSkip = (d.getVarFlag("OVERLAYFS_QA_SKIP", mountPoint) or "").split()
+        if mountPoint not in overlayMountPoints and not "mount-configured" in qaSkip:
             bb.fatal("Missing required mount point for OVERLAYFS_MOUNT_POINT[%s] in your MACHINE configuration" % mountPoint)
 
     for mountPoint in overlayMountPoints: