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

Reply via email to