1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
Development build
-----------------
If you get afuse from git, run ./autogen.sh to generate various autotools
scripts and config.
Contributing
------------
Help is always welcome. Please feel free to jump in, open issues or submit
pull requests.
For consistency purposes, please reformat your code using GNU indent:
$ indent --linux-style *.h *.c
TODO
----
While afuse is basically usable, there are a huge number of things which need
doing to afuse to make it "good". Here are a list of some of these:
* Support multi-threading - Internal Data structures need to guarded
before we allow this.
* Eliminate the proxying - In theory it should be possible for afuse
to mount filesystems within itself. However this seems to cause a
really nasty deadlock. It might be possible for this to work using
multi-threading or rebinding/moving mount points (needs changes to
fusermount).
* Rather than umounting an FS to ensure directory changes are flushed,
it should be possible to flush a handle to the parent dir instead.
* More complex automounting schemes
* Different commands based on regex's of virtual directories.
* Scriptable multi-level virtual directory hierarchy.
* Refactoring
* Code should be split into multiple files (could be more efficient too).
* Some internal terminology can be confusing.
* alloca's should be converted to VLAs as alloca is non-portable.
* Code should in general be made more portable with the help of the
autotools.
* More extensive documentation.
* GUI for interactive automounting. For example we could pop up
an X11 window, or switch to other VTs on a Linux console.
This needs some thought to be implemented well, maybe it should be done with
plug-ins/scripts on a per-FS basis.
* Better debugging output.
* Autotool'ed environment needs lots of work.
* Exit on signal often isn't clean (directory should be unmounted)
(actually this seems to work with FUSE 2.3?)
* Mounting can sometimes happen in silly situations, for example touching
a file in the afuse root will cause a filesystem of that filename
to be automounted. This does not seem to be avoidable in earlier
versions of FUSE (2.3 for example) as getattr is always called on
the virtual directory on any operation and if this fails the whole
operation is aborted. So it is impossible to distinguish a getattr for
[non]-mounting operations.
|