Re: [PATCH] dracut: dmsquash-live: overlay module can be built-in the kernel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Crystal clear, thanks! I will submit a V2 patch using curly brackets

On Wed, May 04, 2022 at 12:03:26PM +0200, German Maglione wrote:
On Tue, Apr 26, 2022 at 10:40 AM Federico Vaga <federico.vaga@xxxxxxx> wrote:

On Fri, Apr 22, 2022 at 01:04:45PM +0200, German Maglione wrote:
>On Wed, Apr 20, 2022 at 9:17 AM Federico Vaga <federico.vaga@xxxxxxx> wrote:
>>
>> The dmsquash-live module assumes that `overlay` is always a module.
>> Therefore, when `overlay` is built-in the kernel, this module will fail
>> to detect the presence of such a feature.
>>
>> This patch adds a fallback mechanism to check also `/proc/filesystem`.
>> This is also what happens with the dracut NSF module when loading the
>> kernel module `rpc_pipefs`.
>>
>> Signed-off-by: Federico Vaga <federico.vaga@xxxxxxx>
>> ---
>>  modules.d/90dmsquash-live/dmsquash-live-root.sh | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
>> index fd8a858a..b4a44e92 100755
>> --- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
>> +++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
>> @@ -170,7 +170,7 @@ do_live_overlay() {
>>          fi
>>      fi
>>      if [ -n "$overlayfs" ]; then
>> -        if ! modprobe overlay; then
>> +        if ! (modprobe overlay || strstr "$(cat /proc/filesystems)" overlay); then
>
>if ! { modprobe overlay || strstr "$(cat /proc/filesystems)" overlay; }; then
>
>I recently made the same mistake of using a subshell.

For my understanding:

Why do you think it's a mistake to use a subshell?

Are you thinking about execution performance, or some locale variable
that do not get exported to the subshell?

Well, maybe "mistake" was not the best word to use in this case,
the subshell here it's simply unnecessary

Then, why curly brackets and not double square brackets?

do you mean like:
if ! [[ modprobe overlay; ]]; then
this is a mistake, you cannot wrap commands in [[ ]] (or []), try this:

[[ false ]] && echo "you should not see this"

I see the latter is far more used among modules; even if it is
enforcing a dependency on bash (or whatever supports `[[`)

That the hooks be posix compliant (as you said [[ can be considered as
a bashism)
is explicitly required In the dracut docs, although it is true that
there are some hooks
that use [[, but mostly setup scripts.


Thanks in advance for the clarifications :)

>>              if [ "$overlayfs" = required ]; then
>>                  die "OverlayFS is required but not available."
>>                  exit 1
>> --
>> 2.27.0
>>
>
>
>--
>German
>



--
German




[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux