Hacker News new | comments | show | ask | jobs | submit login

Oh my god, that would be awesome at the FS level.

Mac OS X's FSEvents API has something similar to that. When you create a FSEvent listener you can pass in an old event ID so the system can give you all the stuff that happened while you weren't listening [1]. Apple uses this for Time Machine (and I suspect Spotlight, too).

[1] https://developer.apple.com/library/mac/#documentation/Darwi...

What happens if a file is created and deleted multiple times? How does this avoid doing a complete walk of FS state and being O(size) itself?

It does not actually tell you what files got changed; it tells you what directories saw at least one change.

Programs will still have to inspect those directories to find out what file(s) changed.

To quote https://developer.apple.com/library/mac/#documentation/Darwi...:

  To better understand this technology, you should first understand what it is
  not. It is not a mechanism for registering for fine-grained notification of
  filesystem changes. It was not intended for virus checkers or other technologies
  that need to immediately learn about changes to a file and preempt those changes
  if needed. [...]

  The file system events API is also not designed for finding out when a
  particular file changes. For such purposes, the kqueues mechanism is more

  The file system events API is designed for passively monitoring a large tree of
  files for changes. The most obvious use for this technology is for backup
  software. Indeed, the file system events API provides the foundation for Appleā€™s
  backup technology.
IMO, only telling users what directories changed is a smart move. It means that the amount of data that must be kept around is much smaller. That allows the OS to keep this list around 'forever' (I do not know how 'forever' that actually is)

It doesn't. But it does mean you don't have to do it every time

This is a nice overview on FSevents


NTFS has this optionally in the "USN Change Journal"; see http://msdn.microsoft.com/en-us/library/aa363798.aspx. It's used by a few Microsoft features like indexing and file replication, but it's available to third party programs too.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact