Need to record offset to data segment into each superblock, not a global value
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 122
- Forks
- 34
- PR merge metrics
- No merged PRs in 30d
Description
The offset to the start of the data chunks is computed by rounding its address up to the nearest page:
https://github.com/LLNL/UnifyCR/blob/29a709f6da3d59d33b34ef4e150d3a311c09bdc2/client/src/unifycr.c#L1745
We record a single offset to the data segment on the server here, which assumes the offset value is the same on every client:
https://github.com/LLNL/UnifyCR/blob/29a709f6da3d59d33b34ef4e150d3a311c09bdc2/server/src/unifycr_cmd_handler.c#L353
We should be careful that it really is the same on each process, or we should record an offset per client. It may be the same since the superblock itself is page aligned, and all structures leading up to that point are the same size on all procs. However, I think it'd be safest to record an offset per client. It feels like we're being more lucky than intentional right now.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading client/src/unifycr.c around line 1745 and server/src/unifycr_cmd_handler.c around line 353. Compare how the data-chunk offset is computed and recorded across processes, then verify whether the shared value is guaranteed or must be recorded per client; done means the superblock metadata is correct for every client.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- distributed-systems
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100