root@de [~]# diskinfo -v /dev/ad8s1d
/dev/ad8s1d
512 # sectorsize
193273528320 # mediasize in bytes (180G)
377487360 # mediasize in sectors
374491 # Cylinders according to firmware.
16 # Heads according to firmware.
63 # Sectors according to firmware.
root@de [~]# dd if=/dev/ad8s1d of=/dev/null bs=4k conv=sync,noerror
17085274+0 records in
17085274+0 records out
69981282304 bytes transferred in 2140.335542 secs (32696407 bytes/sec)
От флагов sync и noerror поведение не зависит. При изменении размера блока число байт меняется, но целевого значения никогда не достигает.
Что я делаю не так, или зачем dd хочет свести меня с ума?
Скорее всего у Вас label битый, со слайсом размером в 180Г на винте меньшего размера, либо с началом слайса большим чем надо. Итого gpart детектит по таблице bsdlabel слайс обьемом 180Г и создает блочное устройство с соотв характеристиками. А запросы dd проходят к физическому диску и доходят до его конца раньше, чем достигнут конца слайса.
А вываливается в одном и том же месте? Битые сектора на винте в смартах? Если так попробовать?
dd if=/dev/ad8s1d of=/dev/null bs=1m count=184 320
gpart show -v показывает теже цифры?