dd does not respect oflag=direct
Nobody has claimed this yet.
- 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
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 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