Translators are programs which provide filesystems in user space functionality
and are even a step further. Each inode can have a translator associated with
it, which means that instead of doing VFS operations on this particular inode,
they are handled by the translator, a userland program. This may act just like
mounting, which means that the association disappears after a reboot or it can
be associated persistently. The former is called an active translator and the
latter is called a passive translator.
The 3 main differences between translators and regular filesystems in userspace
are:
they can be set on any kind of inode and tell the VFS to be of different type
(e.g. you can imagine adding untar translator on a tar file, which would result
in the file acting exactly like a directory)
they have access to the underlaying layer
they can be stacked
The project
The objective of this project is to make NetBSD translator aware. This means VFS
modifications, updating userland tools like fsck for managing filesystems
modifications, userland
tools to enable translator handling and GNU/Hurd binary compatibility to run
GNU/Hurd's translators in NetBSD.
Status
Written before GSoC: This is rather proof-of-concept
code, so it requires many corrections, especially the security policy is
definitely wrong. GNU/Hurd's policy has to be investigated first.
Kernel modifications:
ext2fs changes
basic notion of translators in VFS (has to change)
syscalls to communicate with userland
Basic (lacking functionality) versions of settrans and
showtrans
progress will be reported here
_April 21, 2008: Community Bonding Period -- Students get to know mentors, read documentation, get up to speed to begin working on their projects.
May 26, 2008: Students begin coding for their GSoC projects; Google begins issuing initial student payments
July 7, 2008: Mentors and students can begin submitting mid-term evaluations.
July 14, 2008: Mid-term evaluation deadline; Google begins issuing mid-term student payments provided passing student survey is on file.
August 11, 2008: Suggested 'pencils down' date. Take a week to scrub code, write tests, improve documentation, etc.
August 18, 2008: Firm 'pencils down' date. Mentors, students
and organization administrators can begin submitting final evaluations to
Google.
September 1, 2008: Final evaluation deadline; Google begins issuing student and mentoring organization payments provided forms and evaluations are on file.
Deliverables
Mandatory (must-have) components:
Expected before the mid-term evaluation
VFS modifications:
Modification of generic VFS-related kernel structures
Additional syscalls and vops for setting and getting translators
ext2fs implementations need to be modified to handle
translators
Userland tools:
writing a NetBSD counterpart of GNU/Hurd's settrans and showtrans (tools
for handling translators)
modifications to newfs and fsck to be translator-aware
Documentation
Design decisions and their motivation. This also includes research on how things are done in GNU/Hurd
Manual pages for settrans and gettrans.
Expected before the final deadline
VFS modifications:
There need to be hooks in lookup() function to enable forwarding
VFS operations to the translator
There should be a trigger to run passive translators. This includes making it possible to run a process from the kernel.
GNUMach and GNU/Hurd emulation
investigating the current state and probably
corrections to the Mach compatibility layer
making the NetBSD kernel able to communicate with the translators through Mach ports
Documentation
Manual pages for the GNU/Hurd emulation
Further design decisions with their motivation.
Optional (would-be-nice) components:
Kernel changes:
Provide a native protocol by slight modifications to
puffs