Copying memstick image to a USB (flash/thumb) drive
freebsd at qeng-ho.org
Thu Mar 28 13:01:20 UTC 2013
On 03/28/13 10:32, Ronald F. Guilmette wrote:
> In message <5153FEFF.4090305 at sneakertech.com>, you wrote:
>>> I have filed the following PR:
>> Er, don't take my word for law:
> I didn't. I won't.
>> I have *no* idea if 1M is a good idea
> Any size which is an exact multiple of the physical block size for
> the target device should provide performance which is as good as
> it gets.
> I googled around and read various comments. Some of these kinds
> of devices have a physical block size of 64KiB. Some have 128KiB.
> Some have 256KiB. Some have 1MiB.
> For all of these devices, seting blocksize to 1MiB will provide optimal
> performance with at worst only a _relatively_ tiny waste of space.
>> As for the conv=sync option, I'm not convinced it's necessary either
> Neither am I, but I would rather have it there, than not and take
> It won't hurt anything, and it appears that it _may_ perhaps help.
>> I don't think modern systems really care what the end is padded with
> That wasn't my concern. My concern is that I personally do not know
> what the officially defined semantics are in cases where dd is asked
> to copy data in a specific input block size _and_ the actual data
> available from the input device doesn't perfectly fill up that last
> It is possible, I would guess, that dd may notice the EOF occuring
> before it has filled up an entire input buffer, and then just quit
> at that point, _without_ writing the partial last block to the
> output device.
It will attempt to write a short block. E.g.
arthur at fileserver> ls -l t.pdf
-rw-rw-r-- 1 arthur arthur 233812 Feb 18 12:26 t.pdf
arthur at fileserver> dd if=t.pdf of=/dev/null bs=1k
228+1 records in
228+1 records out
233812 bytes transferred in 0.036731 secs (6365521 bytes/sec)
Those +1 records are the final short block.
> It seems to me that conv=sync is cheap insurance against this
It's used as an insurance against output devices which have a fixed (or
in the case of tape, a minimum) block size. If the short block is not an
exact integer multiple of the device block size then the final write
will fail. conv=sync and a bs (or obs) that's a strict multiple of block
size prevents the problem. That's exactly your use case.
> I have always been a belt and suspenders kind of guy.
Show me the experienced sysadmin who isn't. Invariably learnt the hard
More information about the freebsd-questions