-
Type: Improvement
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Filesystem API
-
Storage Engines
-
5
-
StorEng - 2024-12-24
Live Restores extent lists track holes in a file and gradually remove them as writes or read promotions take place on the file.
However, we have an issue where a write of a single byte will be tracked as removing a one byte hole in live restores metadata, but the actual file system write to disk is 4KB and removes a 4KB hole from the on-disk metadata. If we then reopen the file and repopulate our live restore metadata lseek it will tell us the 4KB hole was filled even though we've only filled a single bytes. Subsequent reads will assume the data range is valid and read the junk content.
We face a similar issue if a read/write extends past one block and part way into the next one. For example a 6KB write will be treated as 8KB by the file system.
To resolve this we enforce a minimum read/write size that is a multiple of the block size the destination file is hosted on.