Re: PodHeitor Incremental Accelerator, Ransomware Detection and Remediation Plugin for Bacula

Josip Deanovic via Bacula-users <[email protected]> Wed, 29 Apr 2026 10:56:25 +0200
Newsgroups gmane.comp.bacula.user
Message-ID <[email protected]>
On 2026-04-29 08:51, Radosław Korzeniewski wrote:
> The idea of an "incremental accelerator" for common local filesystems 
> is
> great.
> But the inotify api is not the best solution for this case IMVHO, YMMV. 
> The
> main issue is the scalability issue.

True. IMHO, this is quick and dirty solution path which can be 
acceptable
for some use cases. I consider reliability of a backup system too 
important
and failures to miss a file unforgiving.

> You want to use "incremental accelerator" for all your high volume 
> storage,
> but inotify functionality does not scale.
> The more directories you want to inotify the more resources it 
> requires. A
> tradeoff, sure.

Yes, it doesn't scale. Still, it can monitor millions of files.
For several millions of files, it will probably consume several hundreds
of megabytes (at least), and this will be unswappable memory.

 From what I remember (I read this is still the case), there is much
worse problem with inotify - it doesn't throttle. When queue overflow
occurs, events get dropped and for most use cases, this is a disaster.
No retry, no recovery from this.
Kernel does send notification but only about overflow happening, without
detailed info about each lost event.
This means that events could slip trough your fingers unnoticed.

Even inotify(7) man page warns about inconsistencies due to race 
conditions.

There are other potential issues as well. Man page says:
-----BEGIN-----
  If a filesystem is mounted on top of a monitored directory, no event is
  generated, and no events are generated for  objects  immediately  under
  the  new  mount  point.   If  the filesystem is subsequently unmounted,
  events will subsequently be generated for the directory and the objects
  it contains.
-----END-----


> I did a prototype of this feature years ago (no coding LLM existed yet) 
> and
> it wasn't worth the effort (the architecture was different, when fd 
> starts
> it spawns a special thread and registers required watches from the 
> config
> file, so incremental job can ask this thread what changed - it was a 
> never
> ending story of issues, race conditions, edge cases, etc.).
> 
> Today there is a modern and scalable fanotify API (or FSEvents in macOS
> or USN Change Journal in win) which should be used instead, again 
> IMVHO,
> YMMV.

Fanotify might be more scalable and reliable but it can still lose 
events.
No guaranteed completeness - the stream of events you receive is not
guaranteed to represent all filesystem activity that actually happened.

Its man page fanotify(7) states: "The event queue can overflow. In this 
case,
events are lost.".

And for what I understood, just like with inotify, you get a single 
overflow
notification, so you know that a loss occurred but you don't know what.

In short, there are many cases where fanotify is better than inotify but
it comes with some other limitations and design choices that should be
considered when using it.


Regards

-- 
Josip Deanovic


_______________________________________________
Bacula-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bacula-users