uutils / uutils/coreutils

dd does not respect oflag=direct

Open
#13,423 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

U - dd
Dominant language
Rust
Stars
24.1k
Forks
2k
Avg merge
1d 5h
Merged PRs (30d)
365

Description

Noticed this today when using uutils dd to write data to some flash drives. When using oflag=direct dd does not do what that flag is supposed to do which is write directly to the hardware bypassing the OS caching.

Writing a file is instant but doing a sync after shows the reality that its being sent to the OS buffer and not to the drive. This can cause some problems as a user might remove a device before data is completely written to it.

This differs from GNU utils as that dd does not cache writes if the direct file is used.

Testing is needed to see if iflag=direct is also doing the correct thing.

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 at the uutils coreutils dd implementation and trace how oflag=direct is handled. Compare its write behavior with GNU dd, including a write followed by sync, then check whether iflag=direct behaves correctly. Done means direct output avoids the reported caching behavior and relevant tests cover the supported behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cli, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.