mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-21 06:33:31 +00:00
9605a60eac
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 |
||
---|---|---|
.. | ||
include | ||
lib | ||
recipes | ||
run | ||
sculpt | ||
src | ||
README |
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.