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>