]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - contrib/fuse/impl_a/README
add Protovis.js-based download-status timeline visualization
[tahoe-lafs/tahoe-lafs.git] / contrib / fuse / impl_a / README
1
2 Welcome to the tahoe fuse interface prototype!
3
4
5 Dependencies:
6
7 In addition to a working tahoe installation, this interface depends
8 on the python-fuse interface.  This package is available on Ubuntu
9 systems as "python-fuse".  It is only known to work with ubuntu
10 package version "2.5-5build1".  The latest ubuntu package (version
11 "1:0.2-pre3-3") appears to not work currently.
12
13 Unfortunately this package appears poorly maintained (notice the wildy
14 different version strings and changing API semantics), so if you know
15 of a good replacement pythonic fuse interface, please let tahoe-dev know
16 about it!
17
18
19 Configuration:
20
21 Currently tahoe-fuse.py uses the same ~/.tahoe/private/root_dir.cap
22 file (which is also the CLI default).  This is not configurable yet.
23 Place a directory cap in this file.  (Hint: If you can run "tahoe ls"
24 and see a directory listing, this file is properly configured.)
25
26
27 Commandline:
28
29 The usage is "tahoe-fuse.py <mountpoint>".  The mount point needs to
30 be an existing directory which should be empty.  (If it's not empty
31 the contents will be safe, but unavailable while the tahoe-fuse.py
32 process is mounted there.)
33
34
35 Usage:
36
37 To use the interface, use other programs to poke around the
38 mountpoint.  You should be able to see the same contents as you would
39 by using the CLI or WUI for the same directory cap.
40
41
42 Runtime Behavior Notes:
43
44 Read-only:
45 Only reading a tahoe grid is supported, which is reflected in
46 the permission modes.  With Tahoe 0.7.0, write access should be easier
47 to implement, but is not yet present.
48
49 In-Memory File Caching:
50 Currently requesting a particular file for read causes the entire file to
51 be retrieved into tahoe-fuse.py memory before the read operation returns!
52 This caching is reused for subsequent reads.  Beware large files.
53 When transitioning to a finer-grained fuse api, this caching should be
54 replaced with straight-forward calls to the wapi.  In my opinion, the
55 Tahoe node should do all the caching tricks, so that extensions such as
56 tahoe-fuse.py can be simple and thin.
57
58 Backgrounding Behavior:
59 When using the 2.5-5build1 ubuntu package, and no other arguments
60 besides a mountpoint to tahoe-fuse.py, the process should remain in
61 the foreground and print debug information.   Other python-fuse
62 versions appear to alter this behavior and may fork the process to
63 the background and obscure the log output.  Bonus points to whomever
64 discovers the fate of these poor log messages in this case.
65
66 "Investigative Logging":
67 This prototype is designed to aide in further fuse development, so
68 currently *every* fuse interface call figures out the process from
69 which the file system request originates, then it figures out that
70 processes commandline (this uses the /proc file system).  This is handy
71 for interactive inspection of what kinds of behavior invokes which
72 file system operations, but may not work for you.  To disable this
73 inspection, edit the source and comment out all of the "@debugcall"
74 [FIXME: double check python ref name] method decorators by inserting a
75 '#' so it looks like "#@debugcall" (without quotes).
76
77 Not-to-spec:
78 The current version was not implemented according to any spec and
79 makes quite a few dubious "guesses" for what data to pass the fuse
80 interface.  You may see bizarre values, which may potentialy confuse
81 any processes visiting the files under the mount point.
82
83 Serial, blocking operations:
84 Most fuse operations result in one or more http calls to the WAPI.
85 These are serial and blocking (at least for the tested python-fuse
86 version 2.5-5build1), so access to this file system is quite
87 inefficient.
88
89
90 Good luck!