NetBSD-Bugs archive

[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



SODA Noriyuki <soda%yuruyuru.net@localhost> writes:
>> try
>>      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
>               blocks.
>
> 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.)

Perry


Home | Main Index | Thread Index | Old Index