Re: [PATCH] dracut: dmsquash-live: overlay module can be built-in the kernel
Federico Vaga <[email protected]> Thu, 5 May 2022 09:01:12 +0200
| Newsgroups | org.kernel.vger.initramfs |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]> 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 <[email protected]> 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 <[email protected]> >> >> --- >> >> 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 >