Re: FS callback routines

Daniel Phillips (phillips@innominate.de)
Tue, 09 Jan 2001 14:07:24 +0100


"Michael D. Crawford" wrote:
>
> Regarding notification when there's a change to the filesystem:
>
> This is one of the most significant things about the BeOS BFS filesystem, and
> something I'd dearly love to see Linux adopt. It makes an app very efficient,
> you just get notified when a directory changes and you never waste time polling.
>
> I think it would require changes to the VFS layer, not just to the filesystems,
> because this is a concept POSIX filesystems do not presently possess.
>
> The other is indexed filesystem attributes, for example a file can have its
> mimetype in the filesystem, and any application can add an attribute and have it
> indexed.
>
> There's a method to do boolean queries on indexed attributes, and you can find
> files in an entire filesystem that match a query in a blazingly short time, much
> faster than walking the directory tree.
>
> If you want to try out the BeOS, there's a free-as-in-beer version at
> http://free.be.com for Pentium PC's. You can also purchase a version that comes
> for both PC's and certain PowerPC macs.
>
> There are read-only versions of this for Linux which I believe are under the
> GPL. The original author is here:
>
> http://hp.vector.co.jp/authors/VA008030/bfs/
>
> He refers you to here to get a version that works under 2.2.16:
>
> http://milosch.net/beos/
>
> The author's intention was to take it read-write, but it's complex because it is
> a journaling filesystem.
>
> Daniel Berlin, a BeOS developer modified the Linux BFS driver so it works with
> 2.4.0-test1. I don't know if it works with 2.4.0. The web site where it used
> to be posted isn't there anymore, and the laptop where I had it is in for
> repair. I may have it on a backup, and I'll see if I can track Daniel down.
>
> While Be, Inc.'s implementation is closed-source, the design of the BFS (_not_
> "befs" as it is sometimes called) is explained in Practical File System Design
> with the Be File System by Dominic Giampolo, ISBN 1-55860-497-9. Dominic has
> since left Be and I understand works at Google now.

fs/dnotify.c:

/*
* Directory notifications for Linux.
*
* Copyright (C) 2000 Stephen Rothwell
...

The currently defined events are:

DN_ACCESS A file in the directory was accessed (read)
DN_MODIFY A file in the directory was modified (write,truncate)
DN_CREATE A file was created in the directory
DN_DELETE A file was unlinked from directory
DN_RENAME A file in the directory was renamed
DN_ATTRIB A file in the directory had its attributes
changed (chmod,chown)

It was done last year, quietly and without fanfare, by Stephen Rothwell:

http://www.linuxcare.com/about-us/os-dev/rothwell.epl

This may be the most significant new feature in 2.4.0, as it allows us
to take a fundamentally different approach to many different problems.
Three that come to mind: mail (get your mail instantly without polling);
make (don't rely on timestamps to know when rebuilding is needed, don't
scan huge directory trees on each build); locate (reindex only those
directories that have changed, keep index database current). As you
noticed, there are many others.

Stephen, it would be very interesting to know more about the development
process you went through and what motivated you to provide this
fundamental facility.

--
Daniel
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/