Is there a Windows Driver for BeFS?

I’ve read through a lot of the resources mentioned in this thread and I’m ashamed to say I’m completely lost.

Has BeFS ever been formally standardized or documented?

If not, how did the Haiku team implement support for it?

BeSly — Haisly

short description

The book Practical Filesystem Design is a description of the BeOS filesystem BFS . The author of this book is one of the developer of the filesystem.

You can get the book from the authors website as PDF

I saw that, but its not a specification. It just says generally what the filesystem does, as well as some analysis.

I guess what you really need is the internals of the driver, in this case your best documentation is the source code of the driver itself and also the bfsviewer for which i gave you a link above is basically the bfs code with modifications to get it to work under windows, you already have a good starting base.

1 Like

Fair enough. I’ll get to work and report back when I have something useful to show

2 Likes

The idea of a r/w FUSE implementation usable with linux is interesting, any resources you could point to on how to use this?

access_bfs_with_fuse

I also posted about it here: Problems booting on a Sony Vaio P - #8 by Munchausen

Thanks! Am I correct in assuming this isn’t something that supports all the advanced features of BFS like attributes and their indexes?

Honestly i don’t know, you should ask one of the devs.
@waddlesplash @korli @PulkoMandy @mmu_man

bfs-fuse uses the real BFS driver code as present in Haiku, but I don’t think it exposes queries, because there isn’t really an API for that anywhere but Haiku.

Attributes are probably also inaccessible due to API mismatches, but that may be more readily solvable.

1 Like

As mentioned in my post linked above, when I’ve tested it failed to set timestamps on destination files when copying to the BFS partition. However otherwise it worked fine. I didn’t try anything with attributes, however.

As to windows, I’ve used winfsp to build a fuse filesystem on windows before. There is also dokan. Or you can just mount things in WSL and then use samba to share the mounted directory, or use winfuse to expose /dev/fuse to windows.

winfsp porting basically means getting the code to build under cygwin and link to the winfsp driver. In my case it was not workable because I ported the plpfuse driver for mounting psion handheld drivers over a serial line, and windows (particularly explorer) creates hundreds of requests to the driver constantly, which when pushed over a very slow serial line meant that the end result was too slow to be useable. However it should work for BFS fuse, in theory.

winfsp: GitHub - winfsp/winfsp: Windows File System Proxy - FUSE for Windows and https://winfsp.dev/
dokan: https://dokan-dev.github.io/
winfuse: GitHub - billziss-gh/winfuse: FUSE for the Windows kernel

The book “Practical…” does mention technical details. You just have to read on.

Greetings
Peter