I have been pretty busy this week. Lots of experiments, and read tons of
code in the libfuse project.

I rewamped the code structure of the whole project, everything is turned
into modules, and compiling different modules together gives you a
completely different filesystem. Currently though there  is only a proxyfs
file system, but most of the code is pretty generic now and could be resued
for further fs experiements (compiling different types of caching fs
sharing a lot of commong code). Initial testing has also been added, not a
lot for now but will try to keep up some high level tests to make sure
there arent high level bugs.

I started to work on the low level proxy fs. Most of the work is done in
terms of mapping inodes to paths. The current implementation is inspired
from the libfuse implementation, where they use 2 concurrent hash tables to
map names to fs nodes, and inodes to fs nodes simultanously, pretty neat
implementationa I adopted a similar approach. The code currently isnt
multithreaded yet but there is no global state and everything operates on a
handle so adding that should be easy.

Some optimisations have also been added, for which I had to look into the
sources of libfuse sources to see how they work, the high level proxy fs
now transfers data with zero copies, the fuse guys have a pretty neat
buffer abstraction which makes it super easy. But most of my time had
actually gone on the low level fuse implementation of proxyfs. It took me
longer than expected as it turned out to be a lot of work. Mapping inodes
to fs paths turned out to be a pretty comlicated problem especially when
multithreaded is in place, but most of the work is done and an
implementation should be out in a couple of days.

I planned on adding benchmarks after finishing low level fuse proxyfs
implementation, but its still pending and bencharks would soon come after
that.


Again, the github project is always up to date, I push in frequently around
3 times everyday, so feel free to follow progress and even add issues (as
features or even questions) on https://github.com/ziahamza/fucache

Permanent link: http://ziahamza.wordpress.com/2013/06/23/weekly-progress-2/

hamza
_______________________________________________
Monkey mailing list
[email protected]
http://lists.monkey-project.com/listinfo/monkey

Reply via email to