Subject: bug#12630: dd doesn't print out the need for iflags=fullblocks, consistently as it is intended to; and manpage clarification?

From: Linda Walsh <[email-masked]>
Date: Fri, 12 Oct 2012 11:52:54 -0700

dd prints out a warning message if less than the block size is read 
(though this is confusing given the posix requirement that dd buffer 
input blocks until it has reached the output block size and the code 
sets both input and output block size to 'blocksize' if 'bs' is specified.

I.e. regardless of whether or not iflags=fullblocks is set,
if bs= was used on the command line, that sets both input and output 
blocksizes.

The Code claims:
  if (blocksize)
    input_blocksize = output_blocksize = blocksize;
  else
    {
      /* POSIX says dd aggregates partial reads into
         output_blocksize if bs= is not specified.  */
      conversions_mask |= C_TWOBUFS;
    }

---
Does that mean if one sets ibs & obs, one gets full blocks, but by settings
only bs, one doesn't? 
I suppose this is in the manpage fine print where it states:

       bs=BYTES
              read and write up to BYTES bytes at a time
       ibs=BYTES
              read up to BYTES bytes at a time (default: 512)
       obs=BYTES
              write BYTES bytes at a time (default: 512)

both bs and ibs have the wording "up to" while obs does not.
Isn't that wording a bit like smarmy internet providers use
that give you speeds "up to", but in reality give less --
or that banks use on interest rates -- and in the fine print you
see minimum balance $1M to get said interest rate?...(exaggeration)...

Might want to state under both "bs" and "obs", that the only way to 
guarantee
the OBS, is to use the obs param and not the "bs" param...(if
that is true)...