Re: Intermittent build failure with TRIM_UNUSED_KSYMS and related problems

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

 



2018-03-16 10:40 GMT+09:00 Nicolas Pitre <nicolas.pitre@xxxxxxxxxx>:
> On Fri, 16 Mar 2018, Masahiro Yamada wrote:
>
>> 2018-03-16 5:56 GMT+09:00 Nicolas Pitre <nicolas.pitre@xxxxxxxxxx>:
>> > ----- >8
>> > Subject: [PATCH] kbuild: make scripts/adjust_autoksyms.sh robust against timestamp races
>> >
>> > Some filesystems have timestamps with coarse precision that may allow
>> > for a recently built object file to have the same timestamp as the
>> > updated time on one of its dependency files. When that happens, the
>> > object file doesn't get rebuilt as it should.
>> >
>> > This is especially the case on filesystems that don't have sub-second
>> > time precision, such as ext3 or Ext4 with 128B inodes.
>> >
>> > Let's prevent that by making sure updated dependency files have a newer
>> > timestamp than the first file we created (i.e. autoksyms.h.tmpnew).
>> >
>> > Reported-by: Thomas Lindroth <thomas.lindroth@xxxxxxxxx>
>> > Signed-off-by: Nicolas Pitre <nico@xxxxxxxxxx>
>> >
>> > diff --git a/scripts/adjust_autoksyms.sh b/scripts/adjust_autoksyms.sh
>> > index 513da1a4a2..d67830e6e3 100755
>> > --- a/scripts/adjust_autoksyms.sh
>> > +++ b/scripts/adjust_autoksyms.sh
>> > @@ -84,6 +84,13 @@ while read sympath; do
>> >         depfile="include/config/ksym/${sympath}.h"
>> >         mkdir -p "$(dirname "$depfile")"
>> >         touch "$depfile"
>>
>> Just a nit.
>>
>> I think this 'touch' is unnecessary.
>> If $depfile does not exist, the '-nt' is evaluated to false,
>> so it will be touched inside the while loop anyway.
>
> Though it is more efficient with the first touch up front, as the common
> case requires only 2 stat system calls instead of 4.


Ah, you are right.
I take my comment back.

I am fine with this patch.
Thanks!



>> > +       # Filesystems with coarse time precision may create timestamps
>> > +       # equal to the one from a file that was very recently built and that
>> > +       # needs to be rebuild. Let's guard against that by making sure our
>> > +       # dep files are always newer than the first file we created here.
>> > +       while [ ! "$depfile" -nt "$new_ksyms_file" ]; do
>> > +               touch "$depfile"
>> > +       done
>> >         echo $((count += 1))
>> >  done | tail -1 )
>> >  changed=${changed:-0}
>> > ----- >8
>>
>>
>> --
>> Best Regards
>> Masahiro Yamada
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



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



[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux