Hi,

This is a short report of my progress on rumpfs. This report is written
and shared in case I'm on a wrong direction.

The most of the stuff util now I have done is reading and thinking.
According to this link[0], puffs is a kernel submodule for using
userspace filesystem. Hurd is based on a microkernel; it means our
filesystem functionality is not in kernel but in userspace. Therefore,
we don't need something like puffs, so libpuffs and libp2k is not
necessary. Another lib called libukfs[1] may be useful for us, though I
suspects it's a bit too high-level abstraction of the rump system calls.

It seems to me libdiskfs in Hurd is not useful in this case, libdiskfs
abstracts to much stuff; for example, libdiskfs has defined io_write
from io.defs for us[2], but in fact with rump the most of the
implementation can be done with the rump syscall rump_sys_write.
Therefore, we cannot rely on the existing lib for writing filesystem
server. I think we need to start with io.defs and fs.defs to construct
the rumpfs. This is the file[3] I used for writing down the mapping of the
Hurd filesystem server interfaces and the rump system calls.

Please point out if there is any error.

Best,
Zhaoming

[0]: https://www.netbsd.org/docs/puffs/rump.html
[1]: https://man.netbsd.org/ukfs.3
[2]: https://git.savannah.gnu.org/cgit/hurd/hurd.git/tree/libdiskfs/io-write.c
[3]: https://codeberg.org/zhml/hurd/src/branch/rump-tmpfs/rumpfs/TODO


Reply via email to