Re: [Bug 219094] gen_kheaders.sh gets stuck in an infinite loop (on tmpfs)

From: Hugh Dickins
Date: Thu Jul 25 2024 - 21:05:52 EST


Please send responses by email reply-to-all rather than through bugzilla.

On Thu, 25 Jul 2024, bugzilla-daemon@xxxxxxxxxx wrote:

> https://bugzilla.kernel.org/show_bug.cgi?id=219094
>
> Hong, Yifan (jacky8hyf@xxxxxxxxx) reports:
>
> I have hit a similar bug to https://bugzilla.kernel.org/show_bug.cgi?id=217681, but on tmpfs.
>
> Here's a small reproducer for the bug, from https://bugzilla.kernel.org/show_bug.cgi?id=217681#c1:
>
> ```
> #include <sys/types.h>
> #include <dirent.h>
> #include <stdio.h>
>
> int main(int argc, char *argv[])
> {
> DIR *dir = opendir(".");
> struct dirent *dd;
>
> while ((dd = readdir(dir))) {
> printf("%s\n", dd->d_name);
> rename(dd->d_name, "TEMPFILE");
> rename("TEMPFILE", dd->d_name);
> }
> closedir(dir);
> }
> ```
>
> Run in a directory with multiple (2000) files, it does not complete on tmpfs. I created a tmpfs mount point via
>
> ```
> mount -o size=1G -t tmpfs none ~/tmpfs/mount/
> ```
>
> The other bug was fixed on btrfs via https://lore.kernel.org/linux-btrfs/c9ceb0e15d92d0634600603b38965d9b6d986b6d.1691923900.git.fdmanana@xxxxxxxx/. Could anyone please see if the issue can be ported to tmpfs as well? Thanks in advance!
>
> I am using a `Linux version 6.6.15` kernel, if that's useful to anyone.

Thank you for reporting, Yifan; and thank you for the easy reproducer, Rob.

Yes, it appears that tmpfs was okay for this up to v6.5, but cannot cope
from v6.6 onwards - a likely-sounding fix went into v6.10, but that must
have been for something different, v6.10 still failing on this repro.

Chuck, I'm hoping that you will have time to spare to solve this in latest;
and then we shall want a backport (of only this fix, or more?) for v6.6 LTS.

Thanks!
Hugh