Incorrect/No NTFS hardlink handling

Found a bug in "Everything"? report it here
Post Reply
dolos
Posts: 8
Joined: Wed Jul 17, 2019 3:39 pm

Incorrect/No NTFS hardlink handling

Post by dolos »

STR:
  • Open Everything
  • Create a test file
  • Verify Everything picked it up and added it to its index
  • Create a hardlink to that file e.g.: mklink /H test.linked.txt test.txt
  • --> Everything does not list the linked file
  • --> Everything does not update the directory size (it's debatable what's the correct behavior here; personally I'd expect Everything to update the folder size, even tho the hardlink does consume no physical disk space other than NTFS meta data)
  • Fully remove the original file, leave the hardlink (which is perfectly valid and the while the NTFS directory entry for the file is removed, the FileNumber is still allocated and the link still valid)
  • --> Everything misses that the file was removed, still lists it
  • --> Still does not list the hardlink, of course.
  • Force Rebuild
  • --> Everything now correctly picked up the hardlink (and correctly there is sign of the initial file that go removed).
therube
Posts: 4561
Joined: Thu Sep 03, 2009 6:48 pm

Re: Incorrect/No NTFS hardlink handling

Post by therube »

Pretty sure what you are seeing is expected behavior, presently (in that it is known that some issues exist relating to hardlinks).
Well, perhaps except for, --> Everything misses that the file was removed, still lists it.
void
Developer
Posts: 15038
Joined: Fri Oct 16, 2009 11:31 pm

Re: Incorrect/No NTFS hardlink handling

Post by void »

Thanks for the bug report.

Everything will correctly index all hard links. However, it currently does have limitations with monitoring changes to hardlinks.

The NTFS USN Journal does not always log the correct hard link filename when there are multiple hard links involved.

Currently, Everything will only update the filename from the USN Journal entry.

The plan for a future Everything release is to ignore the file name in the USN Journal and use the File ID instead, Everything will then lookup all the filenames in the MFT by this File ID and update each instance.

As you have found, forcing a rebuild from Tools -> Options -> Indexes -> Force Rebuild is currently the best option to force Everything to pickup all hard link changes.
Post Reply