dd fails with iflag=direct

Andrew Medico a.medico@gmail.com
Wed Oct 8 15:37:00 GMT 2008

I'm running into a problem with dd's "iflag=direct" option in Cygwin.
When I combine it it with "conv=sync,noerror", dd successfully reads
all of the data from the device but once it gets to the end of the
device it starts reporting I/O errors and never terminates:

$ dd if=/dev/sdd of=/dev/null conv=sync,noerror iflag=direct
dd: reading `/dev/sdd': Input/Output error
1952767+0 records in
1952767+0 records out
999816704 bytes (1.0 GB) copied, 1678.11 s, 596 kB/s
dd: `/dev/sdd': cannot seek: Invalid argument
dd: reading `/dev/sdd': Input/Output error
1952767+1 records in
1952768+0 records out
999817216 bytes (1.0 GB) copied, 1680.11 s, 595 kB/s
dd: reading `/dev/sdd': Input/Output error
1952767+2 records in
1952769+0 records out
999817728 bytes (1.0 GB) copied, 1682.11 s, 594 kB/s

This is with Cygwin 1.5.25 on Windows XP Pro SP2, 32-bit. The devices
I've tested against are IDE hard drives and USB flash drives, all with
512-byte sectors.

I have tried various block sizes (512, 32768, 65536) and the result is the same.

The same dd commands with the same drives on a Linux machine work as
expected (no errors, successful termination).

One detail I've noticed is that this seems to happen only when reading
entire drives. Reading individual partitions on the same drives
completes without error.

Andrew Medico <a.medico@gmail.com>

Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

More information about the Cygwin mailing list