[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: bin/41072: dd ignores bs= when if= comes from stdin
The following reply was made to PR bin/41072; it has been noted by GNATS.
From: "Perry E. Metzger" <perry%piermont.com@localhost>
To: SODA Noriyuki <soda%yuruyuru.net@localhost>
Cc: gnats-bugs%NetBSD.org@localhost, gnats-admin%netbsd.org@localhost,
Subject: Re: bin/41072: dd ignores bs= when if= comes from stdin
Date: Wed, 25 Mar 2009 09:10:33 -0400
SODA Noriyuki <soda%yuruyuru.net@localhost> writes:
>> something.... | dd of=/dev/somepartition bs=10m progress=1
>> and note that you get way too many dots printed.
> That's not a bug, but documented behavior:
> bs=n Set both input and output block size, superseding
> the ibs and obs operands. If no conversion values
> other than noerror, notrunc or sync are specified,
> then each input block is copied to the output as
> a single block without any aggregation of short
> Please note the following sentence, especially:
> If no conversion values other than noerror, notrunc or sync
> are specified, then each input block is copied to the output
> as a single block without any aggregation of short blocks.
> i.e. In this case, dd preserve the return size of the read(2)
> system calls at the corresponding write(2) operation.
> This behavior is needed to copy a variable-blocksize tape with
> preserving each size of tape blocks.
Okay, the phrase "without any aggregation of short blocks" is somewhat
confusing to me. I would suggest that it be explained a bit
better. How about adding, at the end of the paragraph:
This behavior is needed to copy a variable-blocksize tape with
preserving each size of tape blocks. However, it may result in
unexpected behavior when short reads are likely, such as when
reading from a pipe on stdin. In such cases, set obs= alone.
Actually, though, is there a conv= setting that says "always
aggregate"? (I don't seem to see one.)
Main Index |
Thread Index |