]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commit
macfuse: another tahoe fuse implementation
authorrobk-tahoe <robk-tahoe@allmydata.com>
Fri, 15 Feb 2008 01:35:10 +0000 (18:35 -0700)
committerrobk-tahoe <robk-tahoe@allmydata.com>
Fri, 15 Feb 2008 01:35:10 +0000 (18:35 -0700)
commitdcf304ab9b109044c800573c230db1af456e8e2e
treeade605d91df08311f5e5c7da690ba1c2e0197f7b
parent65ec397393e5519cdb6ff44f0854a2176c3cdac9
macfuse: another tahoe fuse implementation

This is the result of various experimentation done into using python-fuse
to provide access to tahoe on the mac.  It's rough in quite a few places,
and is really the result of investigation more than a thorough
implemenation of the fuse api.

upon launch, it looks for the users root_dir by opening ~/.tahoe/node.url
and ~/.tahoe/private/root_dir.cap it then proceeds to cache the directory
structure found by walking the users tahoe drive (safely in the face of
directory loops) into memory and then mounts that filesystem.

when a file is read, it calls the tahoe node to first download the file
into a cache directory (~/.tahoe/_cache) and then serves up the file
from there.

when a file is written, a temporary file is allocated within the tmp dir
of the cache, and upon close() (specifically upon release()) the file is
uploaded to the tahoe node, and the new directory entry written.

note that while the durectory structure is cached into memory only when
the filesystem is mounted, that it is 'write through' i.e. changes made
via fuse are reflected into the underlying tahoe fs, even though changes
made to the tahoe fs otherwise show up only upon restart.

in addition to opening files for read and write, the mkdir() and rename()
calls are supported.  most other file system operations are not yet
supported.  notably stat() metadata is not currently tracked by tahoe,
and is variably reported by this fs depending on write cache files.

also note that this version does not fully support Finder.  access through
normal unix commands such as cat, cp, mv, ls etc works fine, and read
access to file from within finder (including preview images and double-
click to open) work ok.  but copies to the tahoe drive from within finder
may or may not succeed, but will always report an error. This is still
under investigation.

also note that this does not include any build integration.  the included
_fusemodule.so was built on mac os 10.4 against macfuse 1.3.0, and is
known to not work against 10.5-1.3.1  it's possible it may also contain
dependencies upon parts of macports used to build the python that it was
built against. this will be cleaned up later.

usage:
    python tahoefuse.py /Path/to/choice/of/mountpoint
or optionally
    python tahoefuse.py -ovolicon=/Path/to/icon.icns /Path/to/mountpoint

upon startup, tahoefuse will walk the tahoe directory, then print a
summary of files and folders found, and then daemonise itself. to exit,
either eject the 'drive' (note: 10.5 doesn't show it as a drive, since
it considers fuse to be a connected server instead) or unmount it via
umount /Path/to/mountpoint etc.
mac/macfuse/fuse.py [new file with mode: 0644]
mac/macfuse/fuseparts/__init__.py [new file with mode: 0644]
mac/macfuse/fuseparts/_fusemodule.so [new file with mode: 0644]
mac/macfuse/fuseparts/setcompatwrap.py [new file with mode: 0644]
mac/macfuse/fuseparts/subbedopts.py [new file with mode: 0644]
mac/macfuse/tahoefuse.py [new file with mode: 0644]