mirror of
https://github.com/versity/scoutfs.git
synced 2026-02-09 04:00:10 +00:00
5eefaf34f82d7a9f7aed5f8b3ae0a6fae0c4f570
Transaction commits currently directly modify the ring and super block as segments are written. As we introduce shared mounts only the server can modify the ring and super blocks. This adds network messages to let mounts write items in a level 0 segment while the server modifies the allocator and manifest. The item transaction commit now sends a message to the server to get an allocated segno for its new level0 segment and sends a manifest entry to the server once the segment is written. The request and reply handlers for the functions are straight forward. The processing paths are simple wrappers around the allocation and update functions that transaction writing used to call directly. Now that the item transactions aren't updating the super sync can't work with the super sequence numbers. The server needs to make both allocations and manifest updates persistent before it sends replies to the client. We add the ability for the server processing paths to queue and wait for commits of the rings and super block. We can hopefull get reasonable batching by using a work struct for the commit. We update the other processing path callers that modify the rings to use the new commit mechanism. We add a few segment and manifest functions to work with manifest entries that describe segments. This creats a bit of similar looking code thorughout the segment and manifest code but we'll come back and clean this up once we see what the final shared support looks like. scoutfs_seg_alloc() now takes the segno from the caller for the segment it's allocating and inserting into the cache. Transaction commit uses the segno it got from the server while compaction still allocates locally. Signed-off-by: Zach Brown <zab@versity.com>
Description
No description provided
Languages
C
87%
Shell
9.3%
Roff
2.5%
TeX
0.8%
Makefile
0.4%