tags:

views:

50

answers:

1

Hi,

I am going to write a file system prototype by using FUSE. Are there any (additional) well implemented libraries besides FUSE that can provide some common file system optimizing functions like dir cache, journaling, lookup table, atomic ops and etc. It should be better written in C.

By the way, I am going to implement it on OSX and Linux. That's one of the major concerns I will use FUSE but not a native file system, even the performance matters.

Thanks.

A: 

On Windows, the Dokan library has been around for a while. I've been meaning to play with it, but haven't had the chance. It is a file system driver that forwards all activity back to a user mode process, and a DLL that facilitates writing the user mode side. It is open source, and licensed in a mix of LGPL and MIT licenses.

There was an emulation (or perhaps a port) of FUSE for Windows once called WinFUSE, but my links to it are all dead now. It may be findable...

Edit: There is an extensive List of Filesystems at Wikipedia. It doesn't appear to list many options on Linux outside of FUSE. The others that appear at first glance to be similar, are often implemented on top of FUSE.

The exception seems to be LUFS (Linux Userland File System), but work on it appears to have been abandoned in 2003 in favor of FUSE.

RBerteig
I think that because he mentioned using FUSE, hes on Linux.
mathepic
Could be. But he asked an open ended question without otherwise specifying the platform, and so I offer an alternative that happens to not be on Linux in the hope it is useful knowledge.
RBerteig
Hi, maybe I described the problem not clearly. I am going to use FUSE to implement a file system prototype. However, many common tasks a file system develop would face, e.g. journaling, directory cache, atomic_ops are not provided are missing, which need developers to find and maybe wrap from one system to another system.
eddyxu
Ah. There you may need to fall back on data structure libraries and first principles. Or lift the required code out of existing file systems and adapt it to your experiments. My searching around yesterday didn't turn up much in the way of hints at that sort of thing...
RBerteig