mirror of
https://github.com/versity/scoutfs.git
synced 2026-01-05 03:44:05 +00:00
a07b41fa8b719a843acd1890a9755fbff78aa1d3
Now that we have the interval tree we can use it to store the manifest. Instead of having different indexes for each level we store all the levels in one index. This simplifies the code quite a bit. In particular, we won't have to special case merging between level 0 and 1 quite as much because level 0 is no longer a special list. We have a strong motivation to keep the manifest small. So we get rid of the blkno radix. It wasn't wise to trade off more manifest storage to make the ring a bit smaller. We can store full manifests in the ring instead of just the block numbers. We rework the new_manifest interace that adds a final manifest entry and logs it. The ring entry addition and manifest update are atomic. We're about to implement merging which will permute the manifest. Read methods won't be able to iterate over levels while racing with merging. We change the manifest key search interface to return a full set of all the segments that intersect the key. The next item interface now knows how to restart the search if hits the end of a segment on one level and the next least key is in another segment and greater than the end of that completed segment. There was also a very crazy cut+paste bug where next item was testing that the item is past the last search key with a while instead of an if. It'd spin throwing list_del_init() and brelse() debugging warnings. Signed-off-by: Zach Brown <zab@versity.com>
Description
No description provided
Languages
C
87.2%
Shell
9.1%
Roff
2.5%
TeX
0.9%
Makefile
0.3%