hpc / hpc/mpifileutils

Terminology: why --synchronous?

Open
#346 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
200
Forks
85
Avg merge
3d 21h
Merged PRs (30d)
2

Description

Apologies for being pedantic today :)

Why is direct I/O behind a flag called --synchronous? Shouldn't it be --direct, or --unbuffered?
Using O_DIRECT for open(2) will not impact whether read(2) and write(2) are synchronous.

Excluding sockets with O_NONBLOCK, synchronous / asynchronous is usually a property of the syscall itself. I believe the aio API requires direct (unbuffered) I/O, but that's not the case with the new io_uring API.

You can have asynchronous direct I/O (io_uring, aio), asynchronous buffered I/O (io_uring), synchronous direct I/O (read/write with O_DIRECT), synchronous buffered I/O (read/write).

Also, all of these modes should not be confused with O_SYNC/fdatasync/fsync, which is mostly orthogonal to the above :).

Contributor guide

Open the contributing guide

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 locating the CLI definition and all uses of the --synchronous option, then inspect how it maps to open(2) flags such as O_DIRECT. Compare the terminology with the project's handling of buffered, direct, asynchronous, and sync-to-disk I/O. Done means reaching an agreed naming decision and updating every affected user-facing reference consistently.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
cli
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.