Page 1 of 1

Incorrect/No NTFS hardlink handling

Posted: Wed Jul 17, 2019 5:08 pm
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).

Re: Incorrect/No NTFS hardlink handling

Posted: Wed Jul 17, 2019 11:07 pm
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.

Re: Incorrect/No NTFS hardlink handling

Posted: Thu Jul 18, 2019 2:57 am
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.