Re: [PATCH] Parallel make bug in Makefile of mdadm-3.3.1 (corrupted udev rules and/or systemd services)

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

 



This new patch, that only changes the filename, was tested and verified
to fix the problem in the downstream Gentoo bug,
https://bugs.gentoo.org/show_bug.cgi?id=517218#c18
So you were right :)

On 17/07/14 11:31, Samuli Suominen wrote:
> On 17/07/14 11:25, NeilBrown wrote:
>> On Thu, 17 Jul 2014 10:30:05 +0300 Samuli Suominen <ssuominen@xxxxxxxxxx>
>> wrote:
>>
>>> If you run with:
>>>
>>> $ export MAKEFLAGS="-j9"
>>> $ make install install-systemd
>>>
>>> As in, combine "install" and "install-systemd" in the same command using
>>> parallel make,
>>> the content of .service files could end up in .rules, or otherway around
>>> because GNU
>>> make fill run them in parallel and the commands might ran at the same
>>> time, and both
>>> use same variables $file and same temporary files .install.tmp
>>>
>>> This was reported at,
>>> https://bugs.gentoo.org/show_bug.cgi?id=517218
>>>
>>> The immediate workaround is,
>>>
>>> $ export MAKEFLAGS="-j9"
>>> $ make install
>>> $ make install-systemd
>>>
>>> And the attach patch makes it full proof so they can be ran at the same
>>> line.
>>>
>>> Thanks,
>>> Samuli
>> Hi,
>>  thanks for the bug report and the patch!
>>
>> I don't think it is necessary to change the name for the variable (file ->
>> file1, file2 or file3).  Just leave it as 'file'.
>> However changing the name is important.  Could you send a patch which just
>> does that, and I'll apply it.
>>
>> Also if the patch could be included inline in the mail, rather than as an
>> attachment, that would be nice.
>>
>> (But if you don't want to bother, I'll make the fix anyway and credit you).
>>
>> Thanks,
>> NeilBrown
> Thanks for the review, I wasn't 100% sure which I should be changing,
> the variable, or the filename,
> so I changed both.
> So, you are most likely correct.
>
> Here is the patch that only changes the filename,
>
> --- mdadm-3.3.1.orig/Makefile
> +++ mdadm-3.3.1/Makefile
> @@ -282,25 +282,25 @@
>  
>  install-udev: udev-md-raid-arrays.rules udev-md-raid-assembly.rules
>      @for file in 63-md-raid-arrays.rules 64-md-raid-assembly.rules ; \
> -    do sed -e 's,BINDIR,$(BINDIR),g' udev-$${file#??-} > .install.tmp && \
> +    do sed -e 's,BINDIR,$(BINDIR),g' udev-$${file#??-} > .install.tmp.1
> && \
>         echo $(INSTALL) -D -m 644 udev-$${file#??-}
> $(DESTDIR)$(UDEVDIR)/rules.d/$$file ; \
> -       $(INSTALL) -D -m 644 .install.tmp
> $(DESTDIR)$(UDEVDIR)/rules.d/$$file ; \
> -       rm -f .install.tmp; \
> +       $(INSTALL) -D -m 644 .install.tmp.1
> $(DESTDIR)$(UDEVDIR)/rules.d/$$file ; \
> +       rm -f .install.tmp.1; \
>      done
>  
>  install-systemd: systemd/mdmon@.service
>      @for file in mdmon@.service mdmonitor.service
> mdadm-last-resort@.timer \
>          mdadm-last-resort@.service ; \
> -    do sed -e 's,BINDIR,$(BINDIR),g' systemd/$$file > .install.tmp && \
> +    do sed -e 's,BINDIR,$(BINDIR),g' systemd/$$file > .install.tmp.2 && \
>         echo $(INSTALL) -D -m 644 systemd/$$file
> $(DESTDIR)$(SYSTEMD_DIR)/$$file ; \
> -       $(INSTALL) -D -m 644 .install.tmp
> $(DESTDIR)$(SYSTEMD_DIR)/$$file ; \
> -       rm -f .install.tmp; \
> +       $(INSTALL) -D -m 644 .install.tmp.2
> $(DESTDIR)$(SYSTEMD_DIR)/$$file ; \
> +       rm -f .install.tmp.2; \
>      done
>      @for file in mdadm.shutdown ; \
> -    do sed -e 's,BINDIR,$(BINDIR),g' systemd/$$file > .install.tmp && \
> +    do sed -e 's,BINDIR,$(BINDIR),g' systemd/$$file > .install.tmp.3 && \
>         echo $(INSTALL) -D -m 755  systemd/$$file
> $(DESTDIR)$(SYSTEMD_DIR)-shutdown/$$file ; \
> -       $(INSTALL) -D -m 755  .install.tmp
> $(DESTDIR)$(SYSTEMD_DIR)-shutdown/$$file ; \
> -       rm -f .install.tmp; \
> +       $(INSTALL) -D -m 755  .install.tmp.3
> $(DESTDIR)$(SYSTEMD_DIR)-shutdown/$$file ; \
> +       rm -f .install.tmp.3; \
>      done
>      if [ -f /etc/SuSE-release -o -n "$(SUSE)" ] ;then $(INSTALL) -D -m
> 755 systemd/SUSE-mdadm_env.sh
> $(DESTDIR)$(SYSTEMD_DIR)/../scripts/mdadm_env.sh ;fi
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-raid" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux