Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-13876

Require read/writes in live restore are a multiple of the backing file system's block size

    • Type: Icon: Improvement Improvement
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 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.

            Assignee:
            andrew.morton@mongodb.com Andrew Morton
            Reporter:
            andrew.morton@mongodb.com Andrew Morton
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: