robk-tahoe [Wed, 5 Mar 2008 23:34:18 +0000 (16:34 -0700)]
confwiz: add nickname determination
the confwiz now uses socket.gethostname() if a 'nickname' file doesn't already
exist, and passes that nickname into the 'record_install' method on the backend,
so that the moniker can be recorded in the system table.
Brian Warner [Wed, 5 Mar 2008 23:54:26 +0000 (16:54 -0700)]
docs/mutable: describe deep-verify-cap scheme, update picture
Brian Warner [Wed, 5 Mar 2008 22:12:42 +0000 (15:12 -0700)]
webish: split out 'unlinked' operations
Brian Warner [Wed, 5 Mar 2008 21:59:56 +0000 (14:59 -0700)]
webish: this file is too big, start breaking it into pieces, beginning with status
Brian Warner [Wed, 5 Mar 2008 04:10:52 +0000 (21:10 -0700)]
mutable-retrieve: only record server response times for queries that we don't ignore
Brian Warner [Wed, 5 Mar 2008 04:08:24 +0000 (21:08 -0700)]
mutable: when retrieving, don't try to grab the encprivkey, to save a roundtrip
Brian Warner [Wed, 5 Mar 2008 04:04:36 +0000 (21:04 -0700)]
webish: add more mutable-retrieve timing status
Brian Warner [Wed, 5 Mar 2008 01:50:44 +0000 (18:50 -0700)]
web: status: add 'started' timestamps to all operations
Zooko O'Whielacronx [Sun, 9 Mar 2008 15:50:46 +0000 (08:50 -0700)]
apply dreid's patch from #335 to fix the provisioning page in zipped distributions
Brian Warner [Tue, 4 Mar 2008 22:11:40 +0000 (15:11 -0700)]
mutable: oops, .download *is* in use, by the speedtest. Restore it and add a test.
Brian Warner [Tue, 4 Mar 2008 21:42:25 +0000 (14:42 -0700)]
test_util.py: get 100% test coverage for hashutil.py
Brian Warner [Tue, 4 Mar 2008 21:27:45 +0000 (14:27 -0700)]
uri.py: get 100% test coverage, fix a few bugs in the process
Brian Warner [Tue, 4 Mar 2008 21:01:55 +0000 (14:01 -0700)]
mutable.py: remove unused 'download' method (we only have download_to_data for now)
Brian Warner [Tue, 4 Mar 2008 21:01:28 +0000 (14:01 -0700)]
test_filenode.py : improve coverage of mutable filenode, fix a bug in __hash__
Brian Warner [Tue, 4 Mar 2008 08:24:35 +0000 (01:24 -0700)]
test_system: improve test coverage of publish/retrieve status
Brian Warner [Tue, 4 Mar 2008 08:07:44 +0000 (01:07 -0700)]
webish: add primitive publish/retrieve status pages
Brian Warner [Tue, 4 Mar 2008 06:55:58 +0000 (23:55 -0700)]
stats: make StatsGatherer happy about sharing a process with other services, add one during system test to get some test coverage
Brian Warner [Tue, 4 Mar 2008 04:56:23 +0000 (21:56 -0700)]
test_web: improve upload/download status coverage
Brian Warner [Tue, 4 Mar 2008 04:37:17 +0000 (21:37 -0700)]
test_system: add test coverage for download-status and upload-status
Brian Warner [Tue, 4 Mar 2008 03:53:45 +0000 (20:53 -0700)]
webish: download-results: add per-server response times
Brian Warner [Tue, 4 Mar 2008 03:30:35 +0000 (20:30 -0700)]
webish: download-results: add server_problems
Brian Warner [Tue, 4 Mar 2008 03:09:32 +0000 (20:09 -0700)]
webish download results: add servermap, decrypt time
Brian Warner [Tue, 4 Mar 2008 02:19:21 +0000 (19:19 -0700)]
webish: add 'download results', with some basic timing information
Brian Warner [Mon, 3 Mar 2008 21:48:52 +0000 (14:48 -0700)]
webish: make upload timings visible on the recent uploads/downloads status page
Brian Warner [Sat, 1 Mar 2008 06:03:00 +0000 (23:03 -0700)]
webish: add per-file upload/download status pages
Brian Warner [Sat, 1 Mar 2008 05:19:03 +0000 (22:19 -0700)]
retain 10 most recent upload/download status objects, show them in /status . Prep for showing individual status objects
robk-tahoe [Sat, 1 Mar 2008 03:18:15 +0000 (20:18 -0700)]
macfuse: increase default timeout in ui launched mounts
when an operation takes 'too long', on 10.4 the user gets a dialog about
the problem with a 'force eject / keep trying' choice. on 10.5 the fuse
system seems to summarily unmount the drive.
this showed up in 10.5 testing because the time to open() a file depended
upon the size of the file, and an 8Mb test file took long enough for the
node to download that the open() call didn't respond within 60s and fuse
spontaneously ejected the drive, quitting the plugin (and cancelling the
download).
this changes the fuse options passed to the plugin by the ui when the
'mount filesystem' window is used. command line users should check out
the '-odaemon_timeout=...' option. this changes the default timeout from
60s to 300s (5min) for ui launched plugins.
this will be addressed in a deeper manner at a later date, with a more
advanced fuse subsystem which can interleave open()/read() with the
actual download of the file, only blocking when data is not downloaded
yet.
robk-tahoe [Sat, 1 Mar 2008 03:12:41 +0000 (20:12 -0700)]
macfuse: slew of updates
various updates to improve the functionality of the mac fuse plugin
1. caching
previously, the experimental tahoefuse plugin pre-loaded the whole
structure of the specified mount into memory at launch time. changes
which were made through that fuse plugin would be remembered, but any
changes made through other tahoe clients would not be reflected.
now directory contents are only loaded when needed, and the data is
cached for a limited time. any use of Directory objects should first
call maybe_refresh() which will check the time since the cache was last
loaded, and if the data is older than some validity period (currently
26s) then the directory's contents will be refetched and reloaded.
this replaces the 'load_dir()' method of TFS
whenever a local change is made to a Directory object, or when the
aforementioned cache reloading notices a change in directory data, the
mtime of the directory is automatically updated.
2. stat / metadata
the retrieval of 'stat' information for getattr(), and the way that
metadata is handled, has been refactored to better reflect the fact that
metadata in tahoe is only represented by 'edges' (i.e entries in
directories) not on 'nodes' (files or directories themselves) hence a
stat lookup should be a query to the parent directory (specifically the
parent specified by the path being queried in the case that a node has
multiple parents) for details known by that directory for the given
child, rather than a query to the child itself.
the TStat utility class for returning stat information to the python-
fuse layer has been extended to accept a 'metadata' argument in its
constructor. any fields found in the metadata dict which match the
names of the stat attributes are loaded into the TStat object. the
'ctime' and 'mtime' attributes are translated to st_ctime and st_mtime
to mesh with the existing timestamp handling code. any fields specified
by kwargs to the constructor override things that might be loaded from
the metadata dict.
Directory objects now track their children as a dict mapping name to
(child_obj, metadata) tuples. This is because the metadata in tahoe
will be stored exclusively on the edges of the graph. each Directory
maintains its own mtime however, and get_stat() calls will report the
mtime of a directory based on the last modification of the Directory
object, not based on any mtime records from the parent directory's
metadata for that child. This addresses the fact that since directories
may be shared, a given parent may or may not reflect the latest changes,
however one of the Finder's behaviours is to examine the stat of a
directory, and not to bother doing a readdir() if the stat is unchanged.
i.e. unless directories report their changes in their stat info, the
Finder will not show changes within that directory.
3. refactoring
reporting of many error codes has been refactored to raise IOError
subclasses with the appropriate errno. this exploits python-fuse's
built-in mechanism for catching IOError and reporting the errno
embedded within it automatically, while simplifying the code within
the plugin.
the add_child() method on TFS was removed in favour of simply having an
add_child() method on Directory objects. this provides a more OO
approach in that Directory is responsible for maintaining its own in
memory state and also writing changes back to the node. similarly for
remove_child()
these changes, along with the new tfs.compose_url() method,
significantly simplify and improve readability of mkdir, rename methods
along with the newer link and unlink. these also get improved error
reporting.
various operations (chmod, chown, truncate, utime) are now ignored.
previously they would report an unsupported operation (EOPNOTSUPP)
but now are simply logged and ignored. this surpresses errors caused
by some client programs which try to use these operations, but at the
moment those operations are meaningless to the tahoe filesystem anyway.
4. link / unlink / rmdir
link, symlink calls are now supported, though with semantics differing
from posix, both equivalent. unlink, rmdir calls are now supported,
also equivalent.
link or symlink calls duplicate the uri of the named source and adds it
as a child of another directory according to the destination path. for
directories, this creates a 'hard' link, i.e. the same directory will
appear in multiple locations within the filesystem, and changes in
any place will be reflected everywhere. for files, by contrast, since
the uri being duplicated is an immutable CHK uri, link/symlink for files
is equivalent to a copy - though significantly cheaper. (a file copy
with the fuse plugin is likely to cause a new file to be written and
uploaded, the link command simply adds an entry referring to an
existing uri)
in testing, the 'ln' command is unable to make hard links (i.e. call
link()) for directories, though symlink ('ln -s') is supported.
either forms works equivalently for files.
unlink and rmdir both remove the specified entry from its parent
directory.
5. logging
the 'tfuse.log' file now only reports launches of the fuse plugin. once
the plugin has parsed the options, it reopens the log file with the
name of the mount, e.g. tfuse.root_dir.log, so that multiple instances
running concurrently will not interfere with each others' logging.
6. bug fixes
the tmp_file in the cache dir backing files opened for write was
intermittently failing to open the file. added O_CREAT to the os.open
call so that files will be created if missing, not throw errors.
a failure to correctly parse arguments if no mount (dir_cap) name was
given but also no fuse options were given has been fixed. now the
command 'tahoe fuse mountpoint' will correctly default to root_dir
also when running from source, arguments to tahoefuse were not handled
to correctly match the 'tahoe fuse ...' behaviour.
Brian Warner [Sat, 1 Mar 2008 03:01:54 +0000 (20:01 -0700)]
client.py: remove confusing no-longer-used code from get_encoding_parameters
Brian Warner [Sat, 1 Mar 2008 03:00:45 +0000 (20:00 -0700)]
upload: fix up some log messages
Zooko O'Whielacronx [Sat, 1 Mar 2008 03:29:42 +0000 (20:29 -0700)]
wui/wapi/webish: HTML form checkboxes send the value "on", so let's interpret that as boolean true
Zooko O'Whielacronx [Sat, 1 Mar 2008 01:40:27 +0000 (18:40 -0700)]
wapi: add POST /uri/$DIRECTORY?t=set_children
Unfinished bits: doc in webapi.txt, test handling of badly formed JSON, return reasonable HTTP response, examination of the effect of this patch on code coverage -- but I'm committing it anyway because MikeB can use it and I'm being called to dinner...
Zooko O'Whielacronx [Sat, 1 Mar 2008 01:39:25 +0000 (18:39 -0700)]
docs: fix example JSON in webapi.txt to be legal JSON. ;-)
Peter Secor [Fri, 29 Feb 2008 21:14:48 +0000 (14:14 -0700)]
native client - adding ability to mount drives
Peter Secor [Fri, 29 Feb 2008 01:38:38 +0000 (18:38 -0700)]
native client - changed Windows default group name as it conflicted with the previous version
Zooko O'Whielacronx [Fri, 29 Feb 2008 20:11:18 +0000 (13:11 -0700)]
test: refactor webist.POSTHandler() to have a method for each "?t=" command
Input validation and decoding is still done in the body of POSTHandler.renderHTTP().
Zooko O'Whielacronx [Fri, 29 Feb 2008 20:10:08 +0000 (13:10 -0700)]
test: update todo string in test_nevow
Zooko O'Whielacronx [Thu, 28 Feb 2008 21:29:24 +0000 (14:29 -0700)]
tests: test depends on _version.py
because there is a test that asserts that our version is not "unknown"
Zooko O'Whielacronx [Sat, 16 Feb 2008 00:38:22 +0000 (17:38 -0700)]
TAG allmydata-tahoe-0.8.0
Zooko O'Whielacronx [Wed, 27 Feb 2008 21:54:05 +0000 (14:54 -0700)]
doc: change example filename extension back because it is more recognizable and because I love Brian
Zooko O'Whielacronx [Wed, 27 Feb 2008 21:41:57 +0000 (14:41 -0700)]
docs: tweak wording per kpreid and tweak example filename extension per me
Zooko O'Whielacronx [Wed, 27 Feb 2008 18:10:03 +0000 (11:10 -0700)]
docs: clarify which webport value is the default
Zooko O'Whielacronx [Wed, 27 Feb 2008 16:01:38 +0000 (09:01 -0700)]
docs: about.html: a couple of edits suggested by kpreid's comments
Peter Secor [Wed, 27 Feb 2008 07:17:43 +0000 (00:17 -0700)]
native client - update to handle large file upload
Peter Secor [Wed, 27 Feb 2008 02:55:54 +0000 (19:55 -0700)]
config wizard - changing the name
Peter Secor [Wed, 27 Feb 2008 02:34:39 +0000 (19:34 -0700)]
installer and config - name changes
robk-tahoe [Wed, 27 Feb 2008 01:48:22 +0000 (18:48 -0700)]
mac build: ahem. fix makefile probs
oops. I screwed up the makefile syntax further. buildslave would spend a
lot of fruitless time trawling the entire drive. this fixes that. and a
stray -n. ahem. [looks down sheepishly]
Peter Secor [Wed, 27 Feb 2008 01:43:31 +0000 (18:43 -0700)]
native client - added upload metrics, machine name cfg, better queue resumption
robk-tahoe [Wed, 27 Feb 2008 01:20:10 +0000 (18:20 -0700)]
mac build: fix makefile bug
blah $( foo ) is more explicit than blah ` foo ` in a bash-like context
unfortunately it doesn't translate very well to makefiles, for which $(
means something else entirely
robk-tahoe [Wed, 27 Feb 2008 01:08:44 +0000 (18:08 -0700)]
mac build: tweaks to build fuse for 10.4 and 10.5
rather than trying to build a single .app with both 10.4 and 10.5 fuse
libraries embedded within it, for the time being, we're just going to
have independant 10.4 and 10.5 builds.
this provides a 10.5 _fusemodule.so, and build changes to copy the
appropriate versions of files for 10.4 or 10.5 from sub dirs of mac/
into the build tree before triggering py2app
robk-tahoe [Wed, 27 Feb 2008 00:39:07 +0000 (17:39 -0700)]
mac build: make a couple of build dependency hints soft imports
the existing environment on otto requires a few build hints in order for
xml parsing to work properly. these hints are unnecessary, and moreover
their import by depends.py is broken, in the 10.5 environment in which
zandr's buildslave is running.
Brian Warner [Wed, 27 Feb 2008 00:33:14 +0000 (17:33 -0700)]
log more peerinfo in download/upload/checker problems
robk-tahoe [Wed, 27 Feb 2008 00:03:53 +0000 (17:03 -0700)]
mac build: updates to respect UPLOAD_DEST argument to make
the make mac-upload target now requires an UPLOAD_DEST argument to be given,
which is the rsync destination (including trailing '/') to which the version
stamped directory containing the .dmg should be placed. the account the
build is running as (e.g. 'buildslave') should have ssh access to the account
specified in that dest. one might also consider locking the key down to the
target directory by adding something like
command="rsync --server -vlogDtpr . /home/amduser/public_html/dist/mac-blah/"
to the corresponding authorized_key entry on the target machine.
Brian Warner [Tue, 26 Feb 2008 22:35:28 +0000 (15:35 -0700)]
webish status: distinguish active uploads/downloads from recent ones
Brian Warner [Tue, 26 Feb 2008 22:02:35 +0000 (15:02 -0700)]
current-downloads status: add SI, size, make numsegs 1-based
Peter Secor [Fri, 22 Feb 2008 04:02:07 +0000 (21:02 -0700)]
native client - added ability to queue uploads and resume upon service restart
Peter Secor [Fri, 22 Feb 2008 03:46:57 +0000 (20:46 -0700)]
native client - renaming a few more instances to be consistent with Allmydata naming scheme for the release, maybe should parameterize this
Peter Secor [Fri, 22 Feb 2008 03:39:46 +0000 (20:39 -0700)]
native client - added AllmydataTray (replaces TahoeTray)
Peter Secor [Fri, 22 Feb 2008 03:38:11 +0000 (20:38 -0700)]
native client - updated system tray name, missed it at first
Peter Secor [Fri, 22 Feb 2008 03:24:31 +0000 (20:24 -0700)]
native client - updated to match naming for service and tray executable
Peter Secor [Fri, 22 Feb 2008 03:04:58 +0000 (20:04 -0700)]
native client - renaming things to take Tahoe out of the name, improving caching
robk-tahoe [Fri, 22 Feb 2008 01:40:04 +0000 (18:40 -0700)]
confwiz: change smb service name to remove 'tahoe'
the name 'tahoe' is in the process of being removed from the windows
installer and binaries. this changes the name of the smb service the
confwiz tries to start to 'Allmydata SMB'
Peter Secor [Wed, 20 Feb 2008 04:20:34 +0000 (21:20 -0700)]
native client - updating service name to match what the launcher uses
Peter Secor [Wed, 20 Feb 2008 03:58:37 +0000 (20:58 -0700)]
WinFUSE updates for beta release
robk-tahoe [Wed, 20 Feb 2008 01:56:59 +0000 (18:56 -0700)]
mac: added 'mount filesystem' action to the mac gui
this adds an action to the dock menu and to the file menu (when visible)
"Mount Filesystem". This action opens a windows offering the user an
opportunity to select from any of the named *.cap files in their
.tahoe/private directory, and choose a corresponding mount point to mount
that at.
it launches the .app binary as a subprocess with the corresponding command
line arguments to launch the 'tahoe fuse' functionality to mount that file
system. if a NAME.icns file is present in .tahoe/private alonside the
chosen NAME.cap, then that icon will be used when the filesystem is mounted.
this is highly unlikely to work when running from source, since it uses
introspection on sys.executable to find the relavent binary to launch in
order to get the right built .app's 'tahoe fuse' functionality.
it is also relatively likely that the code currently checked in, hence
linked into the build, will have as yet unresolved library dependencies.
it's quite unlikely to work on 10.5 with macfuse 1.3.1 at the moment.
robk-tahoe [Wed, 20 Feb 2008 00:18:17 +0000 (17:18 -0700)]
macfuse: move macfuse files around to simplify pythonpath
the mac/macfuse subdirectory needed to be added to the pythonpath in order
to build a binary incorporating the mac fuse system. this change should
make those modules accessible relative to the mac/ directory which is
implicitly included in the .app build process.
robk-tahoe [Wed, 20 Feb 2008 00:16:08 +0000 (17:16 -0700)]
macfuse: rework fuse initialisation, integrate with 'tahoe'
this provides a variety of changes to the macfuse 'tahoefuse' implementation.
most notably it extends the 'tahoe' command available through the mac build
to provide a 'fuse' subcommand, which invokes tahoefuse. this addresses
various aspects of main(argv) handling, sys.argv manipulation to provide an
appropriate command line syntax that meshes with the fuse library's built-
in command line parsing.
this provides a "tahoe fuse [dir_cap_name] [fuse_options] mountpoint"
command, where dir_cap_name is an optional name of a .cap file to be found
in ~/.tahoe/private defaulting to the standard root_dir.cap. fuse_options
if given are passed into the fuse system as its normal command line options
and the mountpoint is checked for existence before launching fuse.
the tahoe 'fuse' command is provided as an additional_command to the tahoe
runner in the case that it's launched from the mac .app binary.
this also includes a tweak to the TFS class which incorporates the ctime
and mtime of files into the tahoe fs model, if available.
robk-tahoe [Wed, 20 Feb 2008 00:05:14 +0000 (17:05 -0700)]
runner: tweaked runner to make it easier to extend with additional subcommands
runner provides the main point of entry for the 'tahoe' command, and
provides various subcommands by default. this provides a hook whereby
additional subcommands can be added in in other contexts, providing a
simple way to extend the (sub)commands space available through 'tahoe'
Zooko O'Whielacronx [Tue, 19 Feb 2008 22:34:19 +0000 (15:34 -0700)]
docs: change example capability
Zooko O'Whielacronx [Mon, 18 Feb 2008 23:08:05 +0000 (16:08 -0700)]
docs: fix name of docs dir in relnotes.txt
Brian Warner [Mon, 18 Feb 2008 07:31:28 +0000 (00:31 -0700)]
'tahoe start': only create logs/ if we're starting a tahoe node
Brian Warner [Mon, 18 Feb 2008 07:28:56 +0000 (00:28 -0700)]
test_runner.py: test launching an introducer too
Brian Warner [Mon, 18 Feb 2008 07:28:17 +0000 (00:28 -0700)]
'tahoe start': allow this to start arbitrary .tac file -bearing directories (like the log gatherer)
Zooko O'Whielacronx [Sat, 16 Feb 2008 00:35:33 +0000 (17:35 -0700)]
docs: update relnotes.txt
Zooko O'Whielacronx [Fri, 15 Feb 2008 20:16:43 +0000 (13:16 -0700)]
Merge patch which switches to SHA-256d with patch that adds punctuation and capitalization to the comment about the hash value.
Peter Secor [Fri, 15 Feb 2008 19:50:10 +0000 (12:50 -0700)]
commenting out open_welcome_page argument that doesn't seem to work with real installer
Brian Warner [Fri, 15 Feb 2008 11:02:50 +0000 (04:02 -0700)]
test_system.py: improve coverage of webish.py
Brian Warner [Fri, 15 Feb 2008 11:02:38 +0000 (04:02 -0700)]
webish.py: remove some dead code
robk-tahoe [Fri, 15 Feb 2008 07:11:23 +0000 (00:11 -0700)]
confwiz: make opening the welcome page options, off by default on windows, on on mac
robk-tahoe [Fri, 15 Feb 2008 03:14:46 +0000 (20:14 -0700)]
confwiz: fix mac confwiz w.r.t. recent confwiz changes
robk-tahoe [Fri, 15 Feb 2008 03:12:58 +0000 (20:12 -0700)]
confwiz: update the config wiz to open the welcome page
regardless of platform, the confwiz now opens the welcoe page upon
writing a config. it also provides a 'plat' argument (from python's
sys.platform) to help disambiguate our instructions by platform.
robk-tahoe [Fri, 15 Feb 2008 02:44:29 +0000 (19:44 -0700)]
confwiz: add command line options
adds command line option parsing to the confwiz.
the previous --uninstall option behaves as before, but it parsed
more explicitly with the twisted usage library.
added is a --server option, which controls which web site the
backend script for configuration is to be found on. (it is looked
for at /native_client.php on the given server) this option can be
used on conjunction with --uninstall to control where the uninstall
is recorded
Options:
-u, --uninstall record uninstall
-s, --server= url of server to contact
[default: https://beta.allmydata.com/]
e.g. confwiz.py -s https://www-test.allmydata.com/
Brian Warner [Fri, 15 Feb 2008 02:58:01 +0000 (19:58 -0700)]
BIG COMPATIBILITY BREAK: update hash tags, switch to SHA-256d everywhere
Brian Warner [Fri, 15 Feb 2008 02:45:12 +0000 (19:45 -0700)]
uri.py: hush pyflakes warning
Zooko O'Whielacronx [Fri, 15 Feb 2008 20:11:02 +0000 (13:11 -0700)]
docs: update install and usage docs, improve cli "usage" output, make new example directories, add unit test that fails code which prints out sentences that don't end with punctuation marks
Zooko O'Whielacronx [Fri, 15 Feb 2008 18:02:19 +0000 (11:02 -0700)]
docs: edit running.html
Zooko O'Whielacronx [Fri, 15 Feb 2008 03:20:19 +0000 (20:20 -0700)]
add unit test asserting that allmydata.util.base32 matches rfc 3548
Zooko O'Whielacronx [Fri, 15 Feb 2008 02:35:32 +0000 (19:35 -0700)]
merge patch which adds base32 to test_util with patch which removes bencode from test_util
robk-tahoe [Fri, 15 Feb 2008 01:35:10 +0000 (18:35 -0700)]
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.
robk-tahoe [Fri, 15 Feb 2008 00:36:10 +0000 (17:36 -0700)]
mac: fix a small bug in the 'tahoe' script
robk-tahoe [Fri, 15 Feb 2008 00:23:07 +0000 (17:23 -0700)]
idlib: make failures much clearer when encountering unicode
while investigating fuse related stuff, I spent quite a while staring at
very cryptic explosions I got from idlib. it turns out that unicode
objects and str objects have .translate() methods with differing signatures.
to save anyone else the headache, this makes it very clear if you accidentally
try to pass a unicode object in to a2b() etc.
Brian Warner [Fri, 15 Feb 2008 01:06:41 +0000 (18:06 -0700)]
remove bencode, yay
Brian Warner [Fri, 15 Feb 2008 00:59:29 +0000 (17:59 -0700)]
docs/uri.txt: update to reflect mutable files
Brian Warner [Thu, 14 Feb 2008 22:45:56 +0000 (15:45 -0700)]
unicode handling: declare dirnodes to contain unicode child names, update webish to match
Peter Secor [Thu, 14 Feb 2008 04:36:09 +0000 (21:36 -0700)]
updating installer for beta release
Brian Warner [Thu, 14 Feb 2008 03:20:43 +0000 (20:20 -0700)]
more minor architecture.txt changes
Brian Warner [Thu, 14 Feb 2008 03:14:29 +0000 (20:14 -0700)]
architecture.txt: fix some things that have changed a lot in recent releases
robk-tahoe [Thu, 14 Feb 2008 01:17:16 +0000 (18:17 -0700)]
windows installer: remove uninstall tracking, add welcome page
in justin's testing, the uninstall tracking was hanging the uninstall
process (on vista) for now, until we see enough need for it to warrant
more detailed testing/debugging/tweaks, I'm simply disabling the call
to confwiz --uninstall
also this adds a 'welcome page' to the install process. once the user
has installed the windows build, then the installer will open a web
browser to the 'welcome page' on the website ('/welcome_install')
Brian Warner [Thu, 14 Feb 2008 00:41:20 +0000 (17:41 -0700)]
mutable.py: add comments to justify initial-read size choices
Brian Warner [Thu, 14 Feb 2008 00:40:45 +0000 (17:40 -0700)]
docs/dirnodes.txt: add notes on dirnode sizes