Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Oct 2010 18:05:34 -0700
From:      Kenton Varda <temporal@gmail.com>
To:        freebsd-questions@freebsd.org
Subject:   EVFILT_VNODE doesn't scale to large directory trees?
Message-ID:  <AANLkTikc%2BtyBPuV=CdbaKPtznH3sLp8S9P-oPrRM4HJ2@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi all,

I am trying to write some code which monitors a possibly-large directory
tree for changes.  Specifically, it's a build system, and I want it to
automatically start rebuilding whenever I modify a source file.

So far the approach I've taken is to use EVFILT_VNODE to watch every file
and directory in the tree.  This seems to work OK so far, but it worries me
that I have to open() every single file.  When I ran the same code on
Darwin, it promptly hit the open file descriptor limit, and I'm worried that
FreeBSD will do the same on larger code trees.

Is there any better way to accomplish this?  Hate to say it, but Linux's
inotify() seems more scalable here.  From what I can tell from the docs, it
doesn't require opening the watched files and it will even watch all files
in a directory with one call.

-Kenton



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTikc%2BtyBPuV=CdbaKPtznH3sLp8S9P-oPrRM4HJ2>