Mikhail Karpov, le mer. 06 mai 2026 11:06:52 +0700, a ecrit:
> On Tue, 28 Apr 2026 23:01:42 Samuel Thibault wrote:
> 
> Well, I managed to stop using libmachdev, but I still couldn't get the store
> from storeio.
> 
> > Opening the store can be done provided that you have the bootstrap
> > port.  And you have it from the special port, you can just pick it
> > up with task_get_bootstrap_port and use it. You just need to make
> > sure that storeio resumes the next task after being ready to serve
> > file_get_storage_info.
> 
> Passing the storeio_port obtained from task_get_bootstrap_port to
> store_create

That's not what I wrote previously: you need to call fsys_getroot on
that control port, to get an actual file_t, on which the file RPCs will
work.

> I'm also confused about where
> and with what parameters fsys_getroot should be called. I tried calling it
> in
> storeio_bootstrap_startup after task_resume (next_task) with the
> storeio_fsys->underlying parameter

You are talking about a fsys_getroot inside storeio, right? That's not
what I wrote.

What I wrote is that it's ext2fs, just before calling store_create,
which should call fsys_getroot on the storeio control port that ext2fs
got as bootstrap port, to get the root of storeio as file_t. And then it
can call file_get_storage_info on it.

You can see an example of simple fsys_getroot call in acpi_device_open
or pci_device_open.

> > Not sure what you mean. You don't need to interact with exec etc. before
> > interacting with storeio and rumpdisk.
> 
> As far as I understand, the mechanism for calling exec from ext2fs is
> roughly analogous to what storeio requires for ext2fs.

No, it's a completely different dance, which also involves proc, auth
and startup.

What you want to look at is e.g. the relation between the pci-arbiter
translator and the acpi translator at bootstrap. See the
hurd/bootstrap wiki page:


# acpi getting initialized

acpi's `trivfs_S_fsys_init` gets called from the `fsys_init` call from
rumpdisk. It calls `fsys_init` on its bootstrap port.

# pci-arbiter getting initialized

pci-arbiter's `trivfs_S_fsys_init` gets called from the `fsys_init` call from
acpi.

It gets the root node of ext2fs, sets all common ports, and install
itself in the ext2fs FS as translator for `/servers/bus/pci`.

It eventually calls `startup_essential_task` to tell startup that it is ready,
and requests shutdown notifications.

# back to acpi initialization

It gets the root node of ext2fs, sets all common ports, and install
itself in the ext2fs FS as translator for `/servers/acpi`.

It eventually calls `startup_essential_task` to tell startup that it is ready,
and requests shutdown notifications.


And it's the same between rumpdisk and acpi.

Samuel

Reply via email to