Hi Samuel, On 9/12/19 10:08 am, Samuel Thibault wrote: > I have been thinking about how to get rump running for the / filesystem. > ... > I'm thinking that the same can be used for the rump translator, > something like: > > module rump --fs-server-task='${fs-task}' '$(task-create)' '$(task-resume)' > module ext2fs --exec-server-task='${exec-task}' '$(fs-task=task-create)' > module exec '$(exec-task=task-create)' > > and we'd make rump's initialization use task_set_special_port to set > the TASK_BOOTSTRAP_PORT special port of ext2fs to a send right to rump, > and resume it. When ext2fs sees that this port is set, it would use it > instead of the gnumach-provided _hurd_device_master port to open > devices. > > And we can nest this yet more for the pci-arbiter: > > module pci-arbiter --disk-server-task='${disk-task}' '$(task-create)' > '$(task-resume)' > module rump --fs-server-task='${fs-task}' '$(disk-task=task-create)' > module ext2fs --exec-server-task='${exec-task}' '$(fs-task=task-create)' > module exec '$(exec-task=task-create)' > > and we'd make pci-arbiter's initialization use task_set_special_port > to set the TASK_BOOTSTRAP_PORT special port of rump to a send right to > pci-arbiter and resume it. When libpciaccess sees that this port is set, > it would use it instead of looking up /server/bus/pci.
In my own words, the changes that are needed: 1. libpciaccess needs to check if pci-arbiter's task_bootstrap_port is set and if it is, use it instead of /servers/bus/pci 2. pci-arbiter needs to call task_set_special_port on rump's TASK_BOOTSTRAP_PORT if --disk-server-task flag is detected. 3. rumpdisk needs to call task_set_special_port on ext2fs's TASK_BOOTSTRAP_PORT if --fs-server-task flag is detected. 4. ext2fs will just work in this configuration I'm unsure if I have this correct. Can you please elaborate on the above? Thanks, Damien