genode/repos/gems
Martin Stein 9605a60eac tresor: no local copy of snapshots in vbd module
The Virtual Block Device module used to create a local copy of the Snapshots
array respectively Snapshot root it received with an incoming request. After
finishing the VBD operation on the copy, the source module of the request
used to back-copy the resulting Snapshot array resp. Snapshot root. This is
not only less efficient than referencing but also allowed a bug to sneak into
the new C++ implementation.

In contrast to the old Ada/SPARK implementation (CBE), the new design doesn't
allow for global objects that can be accessed by any module without receiving a
reference in a module request. Therefore, the Free Tree module has to receive a
reference to a Snapshots array with each request in order to be able to use it.
In our case, these requests are allocations for a "Write" operation from the
VBD. However, the VBD itself receives only the one Snapshot required for
writing and therefore causes the Free Tree to make bad decisions on whether or
not a block can be re-allocated or not.

With this commit, the VBD always receive a reference to the whole Snapshots
array and also propagates it this way to the Free Tree.

Ref #4971
2024-04-12 15:00:45 +02:00
..
include depot_query: add support for bin and dbg archives 2024-02-26 08:59:09 +01:00
lib gems: remove unused import-sha256_4k.mk 2023-12-13 12:33:05 +01:00
recipes sculpt: add gdb_x86 to distribution and index 2024-04-12 15:00:45 +02:00
run sculpt: add gdb_x86 to distribution and index 2024-04-12 15:00:45 +02:00
sculpt sculpt: host PC framebuffer drivers in runtime 2024-04-12 12:57:30 +02:00
src tresor: no local copy of snapshots in vbd module 2024-04-12 15:00:45 +02:00
README Update README files 2023-03-13 14:32:53 +01:00

This directory is a source-code repository containing Genode-specific services
and applications. In contrast to the components hosted in the 'os' repository,
programs contained in 'gems' are able to leverage the functionalities provided
by higher-level repositories such as 'libports'. To use the 'gems' repository,
make sure to also add those repositories to your build configuraion.