From: Alexandros S. <al...@gm...> - 2008-07-17 16:42:10
|
Hi all, This is a progress update for the Tcl-Fuse project (https://sourceforge.net/projects/tcl-fuse). SINCE LAST UPDATE: * Implemented all the proxy functions that establish an interface between: FUSE API <=> Tcl procedures * Completed the FuseVFS extension that fully exports Tcl's VFS to userspace, via FUSE. * Preliminary API documentation in examples/fusetcl.tcl FUSEVFS: Code at: examples/fusevfs.tcl The FuseVFS extension is implemented in Tcl using the tcl-fuse C extension. It exports the Tcl's VFS on userspace, via FUSE. Based on what it is provided by Tcl, the following FUSE operations have been implemented and tested: getattr readdir readlink open read write rename mknod mkdir unlink rmdir chmod chown symlink link truncate access utimens truncate access flush fsync Whereas the following were not implemented: statfs setxattr getxattr listxattr removexattr opendir releasedir fsyncdir create ftruncate fgetattr destroy lock bmap release either because they weren't necessary (ftruncate, fgetattr, fsyncdir), applicable (bmap), or the necessary information are not provided by Tcl at all (statfs, setxattr, getxattr, listxattr, removexattr). For example, Tcl's VFS does not support "exteded attributes", hence we cannot provided them to FUSE. An other limitation of Tcl's VFS is that it does not support create of fifos, sockets, & device files, and hence it is not supported in FuseVFS either. The release, opendir, and releasedir operations are not necessary due to the state-less nature of this implementation. A state-full version is planned for implementation, which will have greater performance and more thoroughly test tcl-fuse. * Implement a few subcommands of the "fuse" command, namely: delete, version, info & unmount. * Create Tcl cleanup procedures to automatically erase state. * Integration of FUSE events to Tcl's event loop and threading model. * Documentation (man page). TO FETCH svn checkout https://tcl-fuse.svn.sourceforge.net/svnroot/tcl-fuse TO COMPILE On 32bit: autoconf ./configure make sudo make install On 64bit systems: autoconf PKG_CFLAGS="-D_FILE_OFFSET_BITS=64" \ ./configure --with-tcl=/usr/lib64 make sudo make install Detailed instructions in README.tclfuse. REQUIREMENTS: * Kernel with FUSE enabled (CONFIG_FUSE_FS) * Tcl 8.5 * The user mounting a fuse filesystem must be in the "fuse" group (name depends on the distro). TO TRY IT OUT: To mount the "hello" filesystem: cd <root of source code tree> tclsh examples/hello.tcl To mount the FuseVFS filesystem that maps the root of Tcl's VFS: cd <root of source code tree> tclsh examples/test_fusevfs.tcl In both cases the examples/mnt directory is where the filesystems will get mounted. Next status update will come after one or two weeks. Regards, Alexandros |