| ▲ | ta8903 16 hours ago | |||||||
Not technically related to atomicity, but I was looking for a way to do arbitrary filesystem operations based on some condition (like adding a file to a directory, and having some operation be performed on it). The usual recommendation for this is to use inotify/watchman, but something about it seems clunky to me. I want to write a virtual filesystem, where you pass it a trigger condition and a function, and it applies the function to all files based on the trigger condition. Does something like this exist? | ||||||||
| ▲ | zbentley 7 hours ago | parent | next [-] | |||||||
The challenge with that approach is memory: trigger conditions, if added irresponsibly, can result in unbounded memory and (depending on implementation) potentially linear performance degradation of filesystem operations as well. Unbounded kernel memory growth leads to stability or security risks. That tradeoff is at the root of why most notify APIs are either approximate (events can be dropped) or rigidly bounded by kernel settings that prevent truly arbitrary numbers of watches. fanotify and some implementations of kqueue are better at efficiently triggering large recursive watches, but that’s still just a mitigation on the underlying memory/performance tradeoffs, not a full solution. | ||||||||
| ▲ | laz 11 hours ago | parent | prev | next [-] | |||||||
Sounds half baked. What context does this function run in? Is it an interpreted language or an executable that you provide? Inotify is the way to shovel these events out of the kernel, then userspace process rules apply. It's maybe not elegant from your pov, but it's simple. | ||||||||
| ▲ | quesera 10 hours ago | parent | prev | next [-] | |||||||
I've used FUSE for something similar. There are sample "drivers" in easily-modified python that are fast enough for casual use. | ||||||||
| ▲ | direwolf20 13 hours ago | parent | prev | next [-] | |||||||
are you asking for if statements? if(condition) {do the thing;} | ||||||||
| ||||||||
| ▲ | Brian_K_White 15 hours ago | parent | prev [-] | |||||||
incron | ||||||||
| ||||||||