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