Я хочу получить интеллектуальную информацию о диске SATA, подключенном к карте рейда, через транзитную передачу ATA. Я обнаружил, что smartmontools использует функцию funciton bool sat_device::ata_pass_through() для получения интеллектуальных значений моего диска, когда я выполняю команду sudo smartctl -a /dev/sdb -d megaraid,29.
bool sat_device::ata_pass_through(const ata_cmd_in & in, ata_cmd_out & out)
Структура cdb в приведенной выше функции такая же, как и в этой ссылке на сквозной документ ATA.
Но я обнаружил, что могу только используйте API, аналогичный
bool csmi_ata_device::ata_pass_through(const ata_cmd_in & in, ata_cmd_out & out)
в исходном коде smartmontools. Эта функция использует 14-байтовую структуру с именем fis.
И она заполняет структуру fis таким образом
{
unsigned char * fis = pthru.bCommandFIS;
const ata_in_regs & lo = in.in_regs;
const ata_in_regs & hi = in.in_regs.prev;
fis[ 0] = 0x27; // Type: host-to-device FIS
fis[ 1] = 0x80; // Bit7: Update command register
fis[ 2] = lo.command;
fis[ 3] = lo.features;
fis[ 4] = lo.lba_low;
fis[ 5] = lo.lba_mid;
fis[ 6] = lo.lba_high;
fis[ 7] = lo.device;
fis[ 8] = hi.lba_low;
fis[ 9] = hi.lba_mid;
fis[10] = hi.lba_high;
fis[11] = hi.features;
fis[12] = lo.sector_count;
fis[13] = hi.sector_count;
}
Поэтому я хочу знать, как заполнить эту структуру, чтобы она могла получить необходимую мне информацию SMART. Или где я могу узнать какой-нибудь относительный документ.
Все, что я знаю, это установить
fis[ 0] = 0x27; // Type: host-to-device FIS
fis[ 1] = 0x80; // Bit7: Update command register
fis[ 2] = 0xB0; // ATA_CMD_SMART
Подробнее здесь: https://stackoverflow.com/questions/790 ... a-passthro
Как я могу получить значение «время включения (POH)» диска SATA с сквозной передачей данных? ⇐ Linux
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как отправить пароль жесткого диска на жесткий диск SATA, подключенный через USB-адаптер?
Anonymous » » в форуме Linux - 0 Ответы
- 34 Просмотры
-
Последнее сообщение Anonymous
-