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 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.



> +       # 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



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

  Powered by Linux