Skip to contentSkip to conversation

gen_kheaders.sh gets stuck in an infinite loop (on tmpfs)

Bug 219094 Hugh Dickins 2 participants 2 messages Jul 26, 2024 2 messages not in the archive

Subsystems (2)
lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]/

A message that is not in the archive (sent off-list or not yet received): [email protected]/

#2 lore raw

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

Quoted 29 lines · On Thu, 25 Jul 2024, [email protected] wrote:

https://bugzilla.kernel.org/show_bug.cgi?id=219094

Hong, Yifan ([email protected]) 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

Quoted 7 lines
```
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@suse.com/. 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

#3 lore raw
Quoted 45 lines · Hugh Dickins

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

Quoted 29 lines · On Thu, 25 Jul 2024, [email protected] wrote:

https://bugzilla.kernel.org/show_bug.cgi?id=219094

Hong, Yifan ([email protected]) 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

Quoted 7 lines
```
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@suse.com/. 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.

Quoted 8 lines

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.

Well, I don't have time, but I will indeed have a look. ;-) This does look awfully similar to the rename bug I fixed recently in this code.

Meanwhile, can I ask that someone else begin collecting these reproducers to add to fstests? Christian and I have both run fstests repeatedly against tmpfs and it does not seem to find these corner cases.

--
Chuck Lever