fsfipi - the filesystem filter pipeline Code
Brought to you by:
vaclavjuza
/************************************************************/ /************ ******************/ /************ FSFIPI ******************/ /************ ******************/ /************************************************************/ FSFIPI - FileSystem FIlter PIpeline is a sytem, to modify the behaviour of filesystem by a pipeline of filters. These filters are implemented through modules, loaded in run-time by fsfipi binary, after start. Modules are shared libraries with name of form `fsfipi_<module_name>.so' fsfipi usage: fsfipi\ -- <module1_name> <module1_parameters>\ [ -- <module2_name> <module1_parameters> [ -- ... ] ] module names are without `fsfipi_' parameter beginning with `--' can be passed to module by prefixing it with another `-' The first module is in the highest layer, the last in the lowest. Currently, these modules are available in this distribution: frontend: fuse_interface - implements an fuse filesystem. Takes arguments for fusermount. Read http://fuse.sourceforge.net/ for details. backend: localfs - just connects the pipeline to the real filesystem. Usually it is used in combination with the subtree module. filters: subtree - add a directory prefix to all used paths, i.e. if the prefix is `/mnt/disk' and a higher layer (filter) would like to perform an operation on the file `/abc/def' (relative to the filesystem mountpoint), an request for that operation with file `/mnt/disk/abc/def' will be send to the lower layer. Actually it is staticly linked to fsfipi_rename, and implements only renaming function. debug - prints debug information (requests and their results). Without parametr, it does nothing real and returns 0. If it has a parameter, this will be used as a prefix of the debug messages, and requests are passed unchanged to the lower layer. vaves - revolutionary versioning system. Copyright: In fact, what makes the interface is licensed under GNU/LGPL (see COPYING.LIB) and others under GNU/GPL (see COPYING). Author: Václav Jůza, 2005 Used some code and comments from FUSE by Miklos Szeredi, mainly from file fuse.h and fusexmp.h. Inspired also by: PlasticFS (http://plasticfs.sourceforge.net/), author Peter Miller (And maybe, I will make an interface to this system in the future).