FUSE Filesystems
Donations:
$524
Raised 0% of $ goal.
Platform:
AROS
Status:
Completed
Developer:
Fredrik Wikstrom
Deadline:
May 31, 2015
Go Back

Description

Short: Implement the FUSE API, such that FUSE-based filesystem handlers can be used.

 

Deliverables:

  1. Ability to compile and run FUSE-based filesystems with no or minimal changes to the filesystem code.
  2. A working port of the NTFS-3G filesystem.

 

Notes:

 

Minimal changes means things like adding AROS-specific startup code, modifications to use Exec I/O devices or AROSTCP, endian fixes, and/or replacing UNIX calls with AROS ones. The overall structure of the handler should not have to change.

 

The FUSE 2.6 API must be supported, as well as earlier versions if possible. It must be possible to mount a FUSE filesystem via a Mountlist or DEVS:DOSDrivers entry, preferably without any special FUSE-specific arguments. That is, an entry like this should work: NTFS: FileSystem = ntfs.handler Device = fdsk.device Unit = 0 # This however is at odds we the official way to mount FUSE filesystems by simply running them. It should be possible, but is not necessary, to implement both.

 

Possible implementation: The main entry point in the handlers (AROS-specific) boot code is a library entry point. AddDosNode() in expansion.library (called from C:Mount) will have arranged for a DOS device node to be created, and will then call this entry point. An AROS-specific fuse.library call could take care of all the setup details, and would be the first thing called by the handler. To support the FUSE method of simple running the filesystem, a trivial main() that simply calls AddDosNode() and exits is all thats necessary. expansion.library would start a new copy of the handler and proceed as above. The call to fuse_mount() would then call AddDosEntry in dos.library to add the volume entry. It would then create a AROS handler (either a packet process or a IOFS device). When a filesystem request comes in from DOS, it will end up in the handlers request function somewhere inside fuse.library. It will then take the request, translate its arguments and call the appropriate FUSE filesystem function to do the work.

Contributions
$161
Krzysztof Ś
$82
Pascal P
$81
Gerd K
$30
Christoph Johann S
$25
Nigel Tromans
$25
NTromans
$24
Christopher B
$20
Andreas H
$20
Martin H
$20
Matthias R
$20
Stefan L
$10
Olaf Schoenweiss
$5
Miloslav Martinka
$1
Bryan M
Do you think your donation might be missing? Please contact us at support@power2people.org

Genesi Network: Genesi - Main Site Power2People PowerDeveloper
Copyright © 2006 - 2024 Power2People