linux-next fsnotify mod breaks tail -f

From: Hugh Dickins
Date: Thu Dec 10 2020 - 18:47:19 EST


Hi Jan, Amir,

There's something wrong with linux-next commit ca7fbf0d29ab
("fsnotify: fix events reported to watching parent and child").

If I revert that commit, no problem;
but here's a one-line script "tailed":

for i in 1 2 3 4 5; do date; sleep 1; done &

Then if I run that (same result doing ./tailed after chmod a+x):

sh tailed >log; tail -f log

the "tail -f log" behaves in one of three ways:

1) On a console, before graphical screen, no problem,
it shows the five lines coming from "date" as you would expect.
2) From xterm or another tty, shows just the first line from date,
but after I wait and Ctrl-C out, "cat log" shows all five lines.
3) From xterm or another tty, doesn't even show that first line.

The before/after graphical screen thing seems particularly weird:
I expect you'll end up with a simpler explanation for what's
causing that difference.

tailed and log are on ext4, if that's relevant;
ah, I just tried on tmpfs, and saw no problem there.

CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_FANOTIFY=y

Hugh