> Доброе время суток,
> Нарвался на такую вещь:
> добавил в систему (сервер HP Proliant 330, достаточно древний, используется "для садистских
> опытов") валяющийся без дела PATA HD Seagate Barracuda 7200.10, т.е.:
> ad7: 238475MB <Seagate ST3250620A 3.AAD> at ata3-slave UDMA100 Seagate ST3250620A - десктопная модель диска, но точно поддерживает UDMA100
> при загрузке (FreeBSD 8.2-RELEASE #0: Fri Feb 18 02:24:46 UTC 2011
> root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386) увидел, что DMA работает
> примерно так:
> ad7: TIMEOUT - READ_DMA retrying (1 retry left) LBA=0
> ad7: TIMEOUT - READ_DMA retrying (0 retries left) LBA=0
> ad7: FAILURE - READ_DMA timed out LBA=0
> .... ну и много-много таких же слов.
> Замена шлейки на заведомо рабочую, и не одну (в соседней телеге всё
> ок) ни к чему не привела.
1) либо проблема в шлейфе, менять можно сколько угодно, важно знать НА ЧТО!
Вам нужно 100% UDMA шлейф == 80pin.
2) диск - г...о
Найдите Alkid LiveCD с Victoria, загрузитесь - посмотрите SMART и прогоните
тесты READ с REMAP, сами все увидите.
3) контроллер г...о или барахлит
все верхнее может быть как по отдельности, так и в сочетании (это самое неприятное)
> Методом проб и ошибок было установлено, что девайс прекрасно работает в
> -
> # atacontrol mode ad7
> current mode = PIO4
> #
> -
> Поскольку телега для садистских опытов, это в целом устраивает, единственное - хотелось
> бы как-то при загрузке ядра сразу перевести его в нужный mode.
> Подозреваю, что нужно что-то вписать в /boot/device.hints .
> Если кто-то между делом сможет подсказать, что именно - буду премного благодарен!!
by default ATA драйвер работает в DMA mode, ядерный параметр:
hw.ata.ata_dma=1
чтобы перевести в PIO, нужно в
/boot/loader.conf
hw.ata.ata_dma=0
что очень сомнительно, ни разу не попадалось такое железо за ~10-16 лет.
Очень советую:
# man 4 ata
там все четко и подробно изложено, в том числе и еще про один параметр:
hw.ata.ata_dma_check_80pin
ну и на будущее, указывайте используемый релиз или ветку FreeBSD