llnl / llnl/UnifyFS

Need to record offset to data segment into each superblock, not a global value

Open
#249 0 comments 0 reactions 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.