[Eisfair] kernel 6.6.67 testing: Fehlermeldungen von monitoring.sh

Daniel Vogel daniel_vogel at t-online.de
Fr Jan 10 13:14:50 CET 2025


Hallo zusammen,

Am 07.01.25 um 11:55 schrieb Wolfgang Loefstedt:
> neuer Kernel:
> 
> [root at eisfair /]# hddtemp -n /dev/disk/by-id/ata- 
> WDC_WD5000AZLX-75K2TA0_WD-WCC6Z1RNLJHZ
> /dev/disk/by-id/ata-WDC_WD5000AZLX-75K2TA0_WD-WCC6Z1RNLJHZ: WDC 
> WD5000AZLX-75K2TA0                  ▒: S.M.A.R.T. not available
> 
> alter Kernel:
> 
> [root at eisfair /]#  hddtemp -n /dev/disk/by-id/ata- 
> WDC_WD5000AZLX-75K2TA0_WD-WCC6Z1RNLJHZ
> 33

Zwischenstand zu diesem Punkt:

hddtemp kommuniziert mit SATA Platten über den ioctl-Aufruf:

	ioctl(device, SG_IO, &io_hdr);

Dabei wird anschießend der Sense-Buffer ausgelesen um die SATA-Signatur 
zu verifizieren.

Leider ist die Sense-Information beim Kernel 6.6 leer, weshalb diese 
Prüfung fehlschlägt. Wenn ich die Prüfung deaktiviere, dann wird die 
Temparatur korrekt ausgelesen. Hier ein Beispiel mit Ausgabe der 
sg_io_hdr-Struktur, die für den ioctl-Aufruf verwendet wird:

# sudo ./hddtemp SATA:/dev/sda

[...]
--------------------------------------------->
sg_io_hdr.interface_id = 83;
sg_io_hdr.dxfer_direction = -3;
sg_io_hdr.cmd_len = 16;
sg_io_hdr.mx_sb_len = 32;
sg_io_hdr.iovec_count = 0;
sg_io_hdr.dxfer_len = 512;
sg_io_hdr.dxferp = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F0 35 
C2 1F 00 00 00 00 A0 35 C2 1F 00 00 00 00 12 00 00 00 00 00 00 00 FC B2 
03 00 00 00 00 00 7F 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 80 1F 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 
00 00 12 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 FF FF FF FF 00 FF 
FF FF FF FF FF FF 12 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 12 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 08 00 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 20 20 
20 20 20 20 20 20 00 00 00 00 00 00 00 00 00 00 00 20 20 00 20 20 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 
00 00 00 00 00 00 D0 A7 4E F8 FD 7F 00 00 98 A7 4E F8 FD 7F 00 00 A2 AE 
4E F8 FD 7F 00 00 C0 30 C2 1F 00 00 00 00 DC A7 4E F8 FD 7F 00 00 00 00 
00 00 00 00 00 00 A2 AE 4E F8 FD 7F 00 00
sg_io_hdr.cmdp = 85 08 2E 00 D0 00 01 00 00 00 4F 00 C2 00 B0 00
sg_io_hdr.sbp = 38 B9 E0 E8 AB 7F 00 00 5E 50 EB E8 AB 7F 00 00 30 C7 E6 
1F 00 00 00 00 F0 A7 4E F8 FD 7F 00 00
sg_io_hdr.timeout = 3000
sg_io_hdr.flags = 0
<---------------------------------------------
sg_io_hdr.sbp =
sg_io_hdr.status = 2;
sg_io_hdr.masked_status = 1;
sg_io_hdr.msg_status = 0;
sg_io_hdr.sb_len_wr = 0;    <---------- Sense buffer is empty
sg_io_hdr.host_status = 0;
sg_io_hdr.driver_status = 8;
sg_io_hdr.resid = 0;
sg_io_hdr.duration = 72;
sg_io_hdr.info = 1;
sata_pass_thru: sense[0](= 0x38) != 0x72

/dev/sda: ST2000DM008-2FR102: 26°C

In der Kernel-Dokumentation steht:

"This value points to user memory of at least 'mx_sb_len' bytes length 
where the SCSI sense buffer will be output. Most successful commands do 
not output a sense buffer and this will be indicated by 'sb_len_wr' 
being zero."

Ich prüfe noch, ob das ein Fehler des Kernels ist oder die Prüfung der 
Signatur anders erfolgen muss.

-- 
Gruß Daniel
[eisfair-Team]


Mehr Informationen über die Mailingliste Eisfair