Infinite filesystem recursion detected (again)

Hi all, i am not a very deep filesystem expert, but i run into the same issue as stated at [1].

My setup is:

  • file server = IBM i V7R2 with 3 shares
  • Client is a Win10pro which mapped these 3 shares to G: O: and K: drives
  • setup syncthing for sharing these three drives.
  • scan shows a lot (300 … 800) error entries about recursion
  • i used cygwin to check for duplicates with find . -type d -exec c:/windows/system32/fsutil file queryfileid {} ; |sort |uniq -c
  • result is - no dupes. Each entry has a count of 1
  • manually checked some file IDs on IBM i server which shows all file IDs i checked are the same on IBM i as reported by fsutil

So how can i find out WHAT files / dirs are regarded as duplicate due to recursion? I am sure there is not any symlink in these three shares…

Thanks -h

[1] - Infinite filesystem recursion detected

Additional information:

  • when rescanning a share, the number of errors regarding “recursion” changes. After first scan: 141 entries. Second scan: 225 entries. Third scan 397 entries… the number of files/folders shown by st increases…

  • the scan process seems to stop somewhen… ** I counted one share (drive G:) with “dir /s” -> 34771 files, 5349 folders (a lot of Apple Mac files, a reason for the high number of folders?) ** using windows explorer -> mark all entries on mapped drive > properties > 37372 files, 1783 folders (ugh?) ** ST scan reports 4944 files, 566 folders (even after rescan), this will be hard work to examine the logfile.

Assuming that there is in fact no recursion, this is triggered by some sort of funkiness in reported file IDs. Maybe they are random and change over time, causing conflicts. Whether that’s on the “i” file server, or Windows side, or a combo, I doubt that there is something relevant revealed by figuring out precisely which items are caught in the net. I’m not sure how to debug this, really. Maybe log a support ticket with IBM.

The File IDs look rather straight like:

1 Datei-ID: 0x0000000000011f10 1 Datei-ID: 0x0000000000012184 1 Datei-ID: 0x000000000001dbae 1 Datei-ID: 0x000000000001df13 1 Datei-ID: 0x000000000001df15 1 Datei-ID: 0x000000000001df16 1 Datei-ID: 0x000000000001df17 1 Datei-ID: 0x000000000001df18 1 Datei-ID: 0x000000000001df19 1 Datei-ID: 0x000000000001df1a 1 Datei-ID: 0x000000000001df1b 1 Datei-ID: 0x000000000001df1c 1 Datei-ID: 0x000000000001df1d 1 Datei-ID: 0x000000000001df1e 1 Datei-ID: 0x000000000001df1f 1 Datei-ID: 0x000000000001df20 1 Datei-ID: 0x000000000001df21 1 Datei-ID: 0x000000000001df22 1 Datei-ID: 0x000000000001df24 …

Also it worked with st on earlier versions - problems came with update to 1.10

Will need to do more investigation and talk to IBM devs but i think this should not be the problem. Bigger question is - how to find out what exactly does trigger the recursive error.

So 1.9.0 doesn’t have this issue? That’s odd, I don’t think anything relevant was changed there. The ancestor checks were added in 1.7.0, iirc.

The check is that the scanner keeps a stack of parent directories, and compares each new directory found to them using os.SameFile. If that returns true it aborts with infinite recursion detected.

The fact that rescanning multiple times yields different results sounds to me like file IDs are generated on the fly and reused, leading to this issue. The file IDs you show seem “suspiciously” low and sequential to me as well, which doesn’t prove anything but doesn’t rule out the above. I don’t think a file ID on a normal Windows file changes. Maybe it does, on these things.

What exactly is it you want to know? There is a list of affected files/dirs in the UI (the failed items list) and the conflict is always with a parent dir.