On 2/28/24 14:06, Miklos Szeredi wrote: > On Sun, 25 Feb 2024 at 21:58, Antonio SJ Musumeci <trapexit@xxxxxxxxxx> wrote: > >> I've resolved the issue and I believe I know why I couldn't reproduce >> with current libfuse examples. The fact root node has a generation of 0 >> is implicit in the examples and as a result when the request came in the >> lookup on ".." of a child node to root it would return 0. However, in my >> server I start the generation value of everything at different non-zero >> value per instance of the server as at one point I read that ensuring >> different nodeid + gen pairs for different filesystems was better/needed >> for NFS support. I'm guessing the increase in reports I've had was >> happenstance of people upgrading to kernels past 5.14. >> >> In retrospect it makes sense that the nodeid and gen are assumed to be 1 >> and 0 respectively, and don't change, but due to the symptoms I had it >> wasn't clicking till I saw the stale check. >> >> Not sure if there is any changes to the kernel code that would make >> sense. A log entry indicating root was tagged as bad and why would have >> helped but not sure it needs more than a note in some docs. Which I'll >> likely add to libfuse. >> >> Thanks for everyone's help. Sorry for the goose chase. > > Looking deeper this turned out to be a regression, introduced in v5.14 > by commit 15db16837a35 ("fuse: fix illegal access to inode with reused > nodeid"). Prior to this commit the generation number would be ignored > and things would work fine. > > The attached patch reverts this behavior for the root inode (which > wasn't intended, since the generation number is not supplied by the > server), but with an added warn_on_once() so this doesn't remain > hidden in the future. Could you still apply your previous patch? I think that definitely makes sense as well. I think what we also need is notification message from kernel to server that it does something wrong - instead of going to kernel logs, such messages should go to server side logs. Thanks, Bernd