marcboeker / go-fuse Goto Github PK
View Code? Open in Web Editor NEWThis project forked from hanwen/go-fuse
FUSE bindings for Go
License: Other
This project forked from hanwen/go-fuse
FUSE bindings for Go
License: Other
GO-FUSE: native bindings for the FUSE kernel module. HIGHLIGHTS * High speed: as fast as libfuse using the gc compiler for single threaded loads. * Supports in-process mounting of different FileSystems onto subdirectories of the FUSE mount. * Supports 3 interfaces for writing filesystems: - PathFileSystem: define filesystems in terms path names. - NodeFileSystem: define filesystems in terms of inodes. - RawFileSystem: define filesystems in terms of FUSE's raw wire protocol. * Both NodeFileSystem and PathFileSystem support manipulation of true hardlinks. * Includes two fleshed out examples, zipfs and unionfs. EXAMPLES * examples/hello/hello.go contains a 60-line "hello world" filesystem * zipfs/zipfs.go contains a small and simple read-only filesystem for zip and tar files. The corresponding command is in example/zipfs/ For example, mkdir /tmp/mountpoint example/zipfs/zipfs /tmp/mountpoint file.zip & ls /tmp/mountpoint fusermount -u /tmp/mountpoint * zipfs/multizipfs.go shows how to use in-process mounts to combine multiple Go-FUSE filesystems into a larger filesystem. * fuse/loopback.go mounts another piece of the filesystem. Functionally, it is similar to a symlink. A binary to run is in example/loopback/ . For example mkdir /tmp/mountpoint example/loopback/loopback -debug /tmp/mountpoint /some/other/directory & ls /tmp/mountpoint fusermount -u /tmp/mountpoint * unionfs/unionfs.go: implements a union mount using 1 R/W branch, and multiple R/O branches. mkdir -p /tmp/mountpoint /tmp/writable example/unionfs/unionfs /tmp/mountpoint /tmp/writable /usr & ls /tmp/mountpoint ls -l /tmp/mountpoint/bin/vi rm /tmp/mountpoint/bin/vi ls -l /tmp/mountpoint/bin/vi cat /tmp/writable/*DELETION*/* * union/autounionfs.go: creates UnionFs mounts automatically based on existence of READONLY symlinks. Tested on: - x86 32bits (Fedora 14). - x86 64bits (Ubuntu Lucid). BENCHMARKS We use threaded stats over a read-only filesystem for benchmarking. Automated code is under benchmark/ directory. A simple C version of the same FS gives a FUSE baseline Data points (Go-FUSE version May 2012), 1000 files, high level interface, all kernel caching turned off, median stat time: platform libfuse Go-FUSE difference (%) Lenovo T60/Fedora16 (1cpu) 349us 355us 2% slower Lenovo T400/Lucid (1cpu) 138us 140us 5% slower Dell T3500/Lucid (1cpu) 72us 76us 5% slower On T60, for each file we have - Client side latency is 360us - 106us of this is server side latency (4.5x lookup 23us, 1x getattr 4us) - 16.5us is due to latency measurements. - 3us is due to garbage collection. CREDITS * Inspired by Taru Karttunen's package, https://bitbucket.org/taruti/go-extra. * Originally based on Ivan Krasin's https://github.com/krasin/go-fuse-zip BUGS Yes, probably. Report them through https://github.com/hanwen/go-fuse/issues KNOWN PROBLEMS Grep source code for TODO. Major topics: * Support for MacOS and FreeBSD. * Support for umask in Create * Missing support for network FS file locking: FUSE_GETLK, FUSE_SETLK, FUSE_SETLKW * Missing support for FUSE_INTERRUPT, CUSE, BMAP, POLL, IOCTL * In the path API, renames are racy; See also: http://sourceforge.net/mailarchive/message.php?msg_id=27550667 Don't use the path API if you care about correctness. LICENSE Like Go, this library is distributed under the new BSD license. See accompanying LICENSE file.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.