mirror of
https://github.com/versity/scoutfs.git
synced 2026-01-11 06:00:19 +00:00
4084d3d9dc04565fdb58d8f86ce4b7cd121d960f
Now that we have basic file extents we can add a flag to extents to track offline extents. We have to initialize and test the flags as we work with extents. Truncation can be told to leave removed extents around with no block mapping and the offline bit set. Only staging with the correct data version can write to the offline regions. Demand staging isn't implemented yet. Reads from offline extents are treated like sparse regions. Truncation is a straight forward iteration over the portions of existing extents which overlap with the truncated blocks. Writing to offline extents has to first remove the existing offline extent before then adding the new allocated extents. The 'changes' mechanism relied on being able to search the current items to find the changes that should be made before making any changes. This doesn't work for finding merge candidates for the new allocated insertion because the old offline extent change won't have been applied yet. We replace the change mechanism with straight forward item modification and unwinding. The generic block fiemap can't communicate offline extents and iterates over blocks instead of extents. We add our fiemap that iterates over extents and sets the 'UNKNOWN' flag on offline extents. Signed-off-by: Zach Brown <zab@versity.com>
Description
No description provided
Languages
C
87.1%
Shell
9.2%
Roff
2.5%
TeX
0.9%
Makefile
0.3%