News Algolia vs. Samsung: Linux-Patch gegen TRIM-Bug mit Samsung-SSDs

Das ist das eben der Vorteil des Großkonzerns, denn Android basiert auch auf dem Linux Kernel und Leute die sich damit auskennen, düfte es bei Samsung genug geben, denn wie viele Geräte von Samsung laufen den unter Android? Auch wenn wohl wenige bis keines davon auch mdadm RAID nutzt, so ist das dann doch ein vergleichsweise kleine Schritt sich das anzusehen und dabei dürfte dann der Fehler aufgefallen sein. Es passiert ja oft, dass Fremde Fehler finden die denen die damit immer arbeiten nicht auffallen.

Das Teilen der Speicherbreiches zweier Pointer war ja ohne TRIM problemlos weil die Daten beim Lesen oder Schreiben nicht geändert wurden, dann wurde TRIM implementiert und dabei hat man nicht daran gedacht, dass bei mdraid noch ein weitere Pointer auf den Bereich zeigen kann und der Bereich auf den beide zeigen sich danach bei TRIM Befehlen noch ändert weil die zu trimmenden LBAs dort erst später eingetragen werden. So habe ich das hier jedenfalls verstanden und da wurde eben nicht dran gedacht. Bei so einer Änderung der Abarbeitungsreihenfolge würde ich auch direkt mehr Bugs befürchten, wer weiß wo da noch Stellen sind wo sowas auftritt, denn TRIM Befehle scheinen im Kernel ganz anders als Lese- und Schreibbefehle verarbeitet zu werden und die TRIM Unterstützung ist eben nach lange nach dem Erstellen der ganzen Rotinen eingepflegt worden, was alleine schon immer ein erhöhtes Risiko von Bugs bedeutet, weil die ursprüngliche Entwicklung das eben nicht vorgesehen hatte und die die es Nachpflegen dann meist nicht alle Effekte an allen Stellen kennen und untersuchen.

Statt
Code:
	split = bio_clone_fast(bio, gfp, bs);
kommt da nun
Code:
	/*
	 * Discards need a mutable bio_vec to accommodate the payload
	 * required by the DSM TRIM and UNMAP commands.
	 */
	if (bio->bi_rw & REQ_DISCARD)
		split = bio_clone_bioset(bio, gfp, bs);
	else
		split = bio_clone_fast(bio, gfp, bs);
und wenn ich mir nur den Namen bio_clone_fast ansehe, würde ich auch nicht sofort darauf kommen, dass dort nur ein zweiter Pointer auf den gleichen Adressbereich erzeugt wird, clone klingt sehr nach einer Deep Copy, also dem Anlegen eines zweiten Puffers für den neuen Pointer und dem Kopieren der Daten dort rein.

PS: @blackiwid: Polemik, Provokationen sind auch verboten und wer Beiträge mit so viele Rechtschreibfehlern bringt, das man dahinter keinen Menschen mehr vermuten kann, weil niemand bei derart bei vielen Fehlern in einem Wort und im ganzen Satzbau noch den Sinn begreifen kann, der muss sich über entsprechende Antworten nicht wundern. Wie man in den Wald ruft....
Außerdem habe ich Deine ganze angeblichen Argumente doch schon alle widerlegt und Du kommst immer wieder mit den selben Sachen wie dem angeblichen Treiber von Samsung den es nicht gibt, ohne je seine Existenz belegt zu haben.

Wenn man seine Meinung nicht der Faktenlage anpasst, wird sie zur Polemik und in Deinem Fall hier zu klarem Bashing.

PS2: Für alle die es vergessen haben, hier noch ein Auszug aus den Regeln:
 
Zuletzt bearbeitet:
Ich bin ja auch eher einer der gern Samsung kritisiert, aber in dem Fall trifft die einfach keine Schuld. Es war einfach nur Pech dass der Fehler zuerst in Systemen mit ihren SSDs auftrat. Der Fehler liegt definitiv im Linux-Code. Und das Samsung anzulasten dass sie angeblich zu wenig getestet haben ist angesichts der Fakten das der Fehler wohl nur in einem sehr speziellem Szenario auftritt und außerdem Samsung selbst gar nicht mit Linux Support wirbt nur eines: "Bullshit im Hypercube".


PS @Holt: ein Clone kann Shallow oder Deep sein... rein vom Begriff passt also beides. Bei der Verwendung muss man einfach aufpassen ;-)
 
> > Hi, any idea on why the bug affects/manifests only on specific SATA SSDs? It is timing related, or it depends on how the controller manage TRIM requests?

> Timing and a very heavy discard load.

Was da alles zusammenkommen muss für diesen Bug. RAID0 oder RAID10, wer nutzt das schon mit SSD? Und dann hohe Last, viele Discards auf einmal, damit das halt auch mal schiefgeht.

Otto Normal User sind davon dann doch eher nicht betroffen. Sturm im Wasserglas.

Und solche Bugs sind leider verdammt schwer zu finden. Wirds noch einige geben von der Sorte.
 
@Holt

Willst du mal einen Thread starten zu der Kennung der Crucial M500 / M550? Dann können wir das übersichtlich zusammentragen. Ich habe beide SSDs da, die M550 hat noch MU01 und kann frühestens nächste Woche ein Firmwareupdate bekommen. Die M500 liegt gerade außer Reichweite und die Firmwareversionen meiner Geräte hab ich nicht im Kopf :)
Eine Einladung als PM zum Thread würde mich freuen.

Deswegen smartctl für die M550 MU01:
Code:
~$ sudo smartctl -a /dev/sda
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.19.0-23-generic] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     Crucial_CT512M550SSD3
Serial Number:    14510E2785D4
LU WWN Device Id: 5 00a075 10e2785d4
Firmware Version: MU01
User Capacity:    512.110.190.592 bytes [512 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    Solid State Device
Form Factor:      < 1.8 inches
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 6
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Sun Jul 26 01:17:54 2015 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x80)	Offline data collection activity
					was never started.
					Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever 
					been run.
Total time to complete Offline 
data collection: 		( 2380) seconds.
Offline data collection
capabilities: 			 (0x7b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	 (   2) minutes.
Extended self-test routine
recommended polling time: 	 (   6) minutes.
Conveyance self-test routine
recommended polling time: 	 (   3) minutes.
SCT capabilities: 	       (0x0035)	SCT Status supported.
					SCT Feature Control supported.
					SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   100   100   000    Pre-fail  Always       -       0
  5 Reallocated_Sector_Ct   0x0033   100   100   000    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       407
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       234
171 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
172 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
173 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       7
174 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       35
180 Unused_Rsvd_Blk_Cnt_Tot 0x0033   000   000   000    Pre-fail  Always       -       4403
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   000    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
194 Temperature_Celsius     0x0022   051   022   000    Old_age   Always       -       49 (Min/Max 21/78)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       16
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   100   100   000    Old_age   Always       -       0
202 Unknown_SSD_Attribute   0x0031   100   100   000    Pre-fail  Offline      -       0
206 Unknown_SSD_Attribute   0x000e   100   100   000    Old_age   Always       -       0
210 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
246 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       5141248703
247 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       162307989
248 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       102777731

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%       344         -
# 2  Short offline       Completed without error       00%       344         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
 
Zuletzt bearbeitet:
Das ist nett, aber smartctl nutzt mir nichts, was ich bräuche wäre ist nicht dabei, das wäre bei CDI der Abschnitt der mit
-- IDENTIFY_DEVICE ---------------------------------------------------------
anfängt und so aussieht, am Besten mit dem Header welche SSD es ist und der FW Information, also z.B. so:

----------------------------------------------------------------------------
Enclosure : SanDisk Extreme USB Device (V=0781, P=5580, sa1) - sd
Model : SanDisk SSD U100 64GB
Firmware : KM.10.00
Serial Number : 0b7eexxxx
Disk Size : 64,0 GB (8,4/64,0/64,0/64,0)
Buffer Size : Unbekannt
Queue Depth : 32
# of Sectors : 125045424
Rotation Rate : ---- (SSD)
Interface : USB (Serial ATA)
Major Version : ACS-2
Minor Version : ACS-2 Revision 3
Transfer Mode : SATA/300 | SATA/600
Power On Hours : 35 Std.
Power On Count : 215 mal
Host Reads : 535 GB
Host Writes : 387 GB
Temperature : Unbekannt
Health Status : Gut (100 %)
Features : S.M.A.R.T., APM, 48bit LBA, NCQ, TRIM
APM Level : 0000h [OFF]
AAM Level : ----

-- S.M.A.R.T. --------------------------------------------------------------
ID Cur Wor Thr RawValues(6) Attribute Name
05 100 100 __0 000000000000 Ausrangierte Blöcke
09 100 100 __0 000000000023 Eingeschaltete Stunden
0C 100 100 __0 0000000000D7 Ein-/Ausschaltungen
AB 100 100 __0 000000000000 Programmfehler
AC 100 100 __0 000000000000 Löschfehler
AD 100 100 __0 000000000009 Verkäuferspezifisch
AE 100 100 __0 00000000004D Unerwarteter Stromausfall
BB 100 100 __0 000000000000 Gemeldete unkorrigierbare Fehler
E6 100 100 __0 00000000001E Verkäuferspezifisch
E8 100 100 __5 000000000000 Restlebensdauer
EA 100 100 __0 000000000009 Verkäuferspezifisch
F1 100 100 __0 000030768CC8 Host-Schreibvorgänge (gesamt)
F2 100 100 __0 000042F65FC9 Host-Lesevorgänge (gesamt)

-- IDENTIFY_DEVICE ---------------------------------------------------------
0 1 2 3 4 5 6 7 8 9
000: 0040 3FFF C837 0010 0000 0000 003F 0000 0000 0000
010: 3062 3765 6539 6435 6620 2020 2020 2020 2020 2020
020: 0000 0000 0000 4B4D 2E31 302E 3030 5361 6E44 6973
030: 6B20 5353 4420 5531 3030 2036 3447 4220 2020 2020
040: 2020 2020 2020 2020 2020 2020 2020 8001 4000 2F00
050: 4000 0200 0000 0007 3FFF 0010 003F FC10 00FB 9101
060: 0AB0 0774 0000 0007 0003 0078 0078 0078 0078 5200
070: 0000 0000 0000 0000 0000 001F 050E 0004 0048 0048
080: 03F0 0110 746B 7D09 4123 7469 BC01 4123 407F 0001
090: 0001 0000 FFFE 0000 0000 0000 0000 0000 0000 0000
100: 0AB0 0774 0000 0000 0000 0008 4000 0000 5001 B400
110: EEB7 5F9D 0000 0000 0000 0000 0000 0000 0000 4014
120: 4014 0000 0000 0000 0000 0000 0000 0000 0021 0000
130: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
140: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
150: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
160: 0000 0000 0000 0000 0000 0000 0000 0000 0004 0001
170: 2020 2020 2020 2020 0000 0000 0000 0000 0000 0000
180: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
190: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
200: 0000 0000 0000 0000 0000 0000 0000 0000 0000 4000
210: 0000 0000 0000 0000 0000 0000 0000 0001 0000 0000
220: 0000 0000 1031 0000 0000 0000 0000 0000 0000 0000
230: 0000 0000 0000 0000 0008 0010 0000 0000 0000 0000
240: 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
250: 0000 0000 0000 0000 0000 D5A5

Bei der 850 Evo steht 8 im Word 105 und 103F, die hat also diese ganze Bits gesetzt:
6: Supports SATA Rev 3.1
5: Supports SATA Rev 3.0
4: Supports SATA Rev 2.6
3: Supports SATA Rev 2.5
2: Supports SATA II: Extensions
1: Supports SATA 1.0a
0: Supports ATA8-APT ATA8-AST
Bei meiner Plextor M3S steht auch 8 in 105 und 1035 in 222, die unterstützt also nur ATA8-APT ATA8-AST, SATA II: Extensions, SATA Rev 2.6 und SATA Rev 3.0, aber nicht 1.0a und 2.5. Bei der Agility3 mit FW 2.25 steht im Word 105 nur 1 und 103F in 222.

Aber soll ich dafür einen neuen Thread öffnen? Es ist ja eigentlich nur in dem Zusammenhang mit diesem Bug und der Frage warum Intels SSDs nicht davon betroffen waren von Interesse.
 
Das Einzige was mir da noch einfällt ist hdparm -i und hdparm -I
Dokumentation: http://linux.die.net/man/8/hdparm


hdparm -i
Code:
~$ sudo hdparm -i /dev/sda

/dev/sda:

 Model=Crucial_CT512M550SSD3, FwRev=MU01, SerialNo=foobar
 Config={ Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=off
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=1000215216
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
 AdvancedPM=yes: unknown setting WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-3,4,5,6,7

 * signifies the current active mode

hdparm -I
Code:
~$ sudo hdparm -I /dev/sda

/dev/sda:

ATA device, with non-removable media
	Model Number:       Crucial_CT512M550SSD3                   
	Serial Number:      foobar
	Firmware Revision:  MU01    
	Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
	Used: unknown (minor revision code 0x0028) 
	Supported: 9 8 7 6 5 
	Likely used: 9
Configuration:
	Logical		max	current
	cylinders	16383	16383
	heads		16	16
	sectors/track	63	63
	--
	CHS current addressable sectors:   16514064
	LBA    user addressable sectors:  268435455
	LBA48  user addressable sectors: 1000215216
	Logical  Sector size:                   512 bytes
	Physical Sector size:                  4096 bytes
	Logical Sector-0 offset:                  0 bytes
	device size with M = 1024*1024:      488386 MBytes
	device size with M = 1000*1000:      512110 MBytes (512 GB)
	cache/buffer size  = unknown
	Form Factor: less than 1.8 inch
	Nominal Media Rotation Rate: Solid State Device
Capabilities:
	LBA, IORDY(can be disabled)
	Queue depth: 32
	Standby timer values: spec'd by Standard, with device specific minimum
	R/W multiple sector transfer: Max = 16	Current = 16
	Advanced power management level: 254
	DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
	     Cycle time: min=120ns recommended=120ns
	PIO: pio0 pio1 pio2 pio3 pio4 
	     Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
	Enabled	Supported:
	   *	SMART feature set
	   *	Security Mode feature set
	   *	Power Management feature set
	   *	Write cache
	   *	Look-ahead
	   *	Host Protected Area feature set
	   *	WRITE_BUFFER command
	   *	READ_BUFFER command
	   *	NOP cmd
	   *	DOWNLOAD_MICROCODE
	   *	Advanced Power Management feature set
	    	SET_MAX security extension
	   *	48-bit Address feature set
	   *	Device Configuration Overlay feature set
	   *	Mandatory FLUSH_CACHE
	   *	FLUSH_CACHE_EXT
	   *	SMART error logging
	   *	SMART self-test
	   *	General Purpose Logging feature set
	   *	WRITE_{DMA|MULTIPLE}_FUA_EXT
	   *	64-bit World wide name
	   *	IDLE_IMMEDIATE with UNLOAD
	    	Write-Read-Verify feature set
	   *	WRITE_UNCORRECTABLE_EXT command
	   *	{READ,WRITE}_DMA_EXT_GPL commands
	   *	Segmented DOWNLOAD_MICROCODE
	   *	Gen1 signaling speed (1.5Gb/s)
	   *	Gen2 signaling speed (3.0Gb/s)
	   *	Gen3 signaling speed (6.0Gb/s)
	   *	Native Command Queueing (NCQ)
	   *	Phy event counters
	   *	NCQ priority information
	   *	READ_LOG_DMA_EXT equivalent to READ_LOG_EXT
	   *	DMA Setup Auto-Activate optimization
	   *	Device-initiated interface power management
	    	Asynchronous notification (eg. media change)
	   *	Software settings preservation
	    	Device Sleep (DEVSLP)
	   *	SMART Command Transport (SCT) feature set
	   *	SCT Write Same (AC2)
	   *	SCT Features Control (AC4)
	   *	SCT Data Tables (AC5)
	   *	reserved 69[4]
	   *	reserved 69[7]
	   *	Data Set Management TRIM supported (limit 8 blocks)
	   *	Deterministic read ZEROs after TRIM
Security: 
	Master password revision code = 8038
		supported
		enabled
	not	locked
		frozen
	not	expired: security count
		supported: enhanced erase
	Security level maximum
	2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT. 
Logical Unit WWN Device Identifier: 500a07510e2785d4
	NAA		: 5
	IEEE OUI	: 00a075
	Unique ID	: 10e2785d4
Checksum: correct
Device Sleep:
	DEVSLP Exit Timeout (DETO): 50 ms (drive)
	Minimum DEVSLP Assertion Time (MDAT): 10 ms (drive)

Ansonsten natürlich ein neuer Thread, ist praktisch um so ein Spaß mal halbwegs zentral und ohne müsige 4 Seiten Diskussion irgendwo zu haben und irgendwann ist sicher mal jemand froh sowas mit hoher Informationsdichte per Suchmaschine zu finden :)
 
Piktogramm schrieb:
hdparm -I
Code:
~$ sudo hdparm -I /dev/sda

/dev/sda:
...
	Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
....

	   *	Gen1 signaling speed (1.5Gb/s)
	   *	Gen2 signaling speed (3.0Gb/s)
	   *	Gen3 signaling speed (6.0Gb/s)
...
	   *	Data Set Management TRIM supported (limit 8 blocks)
Danke, das hilft schon mal. Transport dürfte Word 222 wiedergeben, "Data Set Management TRIM supported (limit 8 blocks)" dürfe 8 im Word 105 bedeuten, die Gen1|2|3 signaling speed sind die Bits 1,2,3 von Word 76, aber nur wenn das nicht 0x0000 oder 0xFFFF ist, sonst die Features in den Words 77 bis 79. Ich liebe ja einfache und eindeutige Definitionen in Normen, leider geht es den Leute vom T13 Komite wohl anders. :evillol:

Bei Intels DC S 3710 ist der Wert von Word 76 laut Datenblatt 850E, es wird also
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Gen3 signaling speed (6.0Gb/s)
* Native Command Queueing (NCQ)
* Phy event counters
gesetzt, aber nicht Bit 12 für:
* NCQ priority information
Das könnte auch ein Hinweise sein, denn wenn eine SSD keine Prioritäten beim NCQ unterstützt, übrigens mit der SATA Revision 2.6 eingeführt wurden und die TCQ (ab ATA-4 und SCSI2, aber nicht bei SATA verfügbar) seid Anfang an bietet, denn kann man eigentlich sowieso kein Queued TRIM verwenden. Wie will man sonst sicherstellen das die TRIM Befehle vor den Schreibbefehlen auf die gleiche Adresse aufgeführt werden? Außerdem erlaubt NCQ auch keine Mischen der Queued ATA Befehle wie z.B. READ FPDMA QUEUED - 60h mit den anderen Befehlen, es müssen erst alle ausstehenden Queued Befehle verarbeitet werden und dann darf ein anderer Befehl kommen, womit eine Vermischung von Queued und TRIM Befehlen auch sowieso ausgeschlossen ist, das große Performancemanko des DATA SET MANAGEMENT mit OP-Code 06h Befehle.

Deswegen wird Intel auch für die SSDs nur die Unterstützung bis SATA 2.6 im Word 222 ausgeben, denn damit wird der neue NCQ DATA SET MANAGEMET - 64h auch gar nicht genutzt. Wobei Command 64h auch SEND FPDMA QUEUED genannt wird, aber bei Subcommand 00 (dem wohl bisher einig definierten Subcomannd) für SFQ DATA SET MANAGEMENT benutzt, also um die TRIM Befehle in den NCQ Context ausführen zu können und eben nicht warten zu müssen bis alle ausstehenden NCQ Befehle verarbeitet wurden und mit den nächsten NCQ Befehlen dann wieder die Abarbeitung der TRIM Befehle abwarten zu müssen.

Wenn sich da mal der Bug nicht auch auswirkt oder noch einer befindet, komplex genug ist das ganze Thema ja, sind die Intel DC S SSDs jedenfalls schon deswegen nicht betroffen, weil sie von den Fatures her vorgeben keine wirklichen SATA 3.0 SSDs zu sein, wie das Datenblatt es behauptet. Das waren wir aber schon mal.

Intressant am Rand:
Queued TRIM wurde mal mit einer Crucial m500 an einem Intel SATA Host Controller entwickelt und getestet!

Jedenfalls würde ich trotzdem gerne die Daten von CrystalDiskInfo haben, denn ich weiß nicht wie die Blacklist funktioniert und wo sie eingreift, die Werte könnten also schon durch die Blacklist verfalscht sein, denn ich der Entwickler davon gewesen wäre, hätte ich es so gemacht und würde sofort nach dem Auslesen der Identify Device Data sofort die Bits löschen die Fähigkeiten ausweisen, bei denen ich einen Bug vermute, dann kann der ganz sicher nicht mehr getriggert werden und es muss nur an einer Stellen eingegriffen werden. Windows hat meines Wissens keine solche Blacklist, daher sollte dort das Risiko verfälschte Daten zu erhalten dann entsprechend geringer sein.

Piktogramm schrieb:
Ansonsten natürlich ein neuer Thread, ist praktisch um so ein Spaß mal halbwegs zentral und ohne müsige 4 Seiten Diskussion irgendwo zu haben und irgendwann ist sicher mal jemand froh sowas mit hoher Informationsdichte per Suchmaschine zu finden :)
Dann denke ich mal drüber nach, vielleicht kommt die dann mit dem Ergebnis ein Thread und hier ein Link dahin.

Interessant wären auch Wert von einer 840 Evo mit der EXT0DB6Q von einer 840 Evo mit einer früheren FW Version, da bei der FW EXT0DB6Q ja angeblich auch ein Queued TRIM Bug getriggert wird.
 
Zuletzt bearbeitet:
Was mich jetzt interessiert: Bedeutet die Identifizierung des Fehlers nun, daß auch unter Linux-Privatnutzern allgemein der Bug demnächst behoben wird, und die Blacklist nach und nach verschwindet?
 
Gute Frage, aber gerade finde ich im Datenblatt der Intel 535 das diese zwar SATA 3.2 konform ist, dieses auch im Word 222 asugibt, aber kein Queued TRIM unterstützt, Bit 6 von Word 77 und auch Word 105 ist nicht 8 wie bei den Microns/Crucials und Samsungs, sondern sogar nur 1. Also ich würde mal sehr auch einen Bug bei Queued TRIM in Linux tippen, den Bug den Samsung jetzt gefunden hat oder noch einen anderen und das Intel den eben geschickt umgeht indem ihre SSDs dieses Feature alles nicht unterstützen und/oder auch nur weniger Adressblöcke pro TRIM Befehl akzeptieren. Aber erstmal warte ich mal die Identdaten von den m550/MX100 mit der MU02er FW ab.

Auf jeden Fall geben aber die Intel SSDs schon mal weniger Fähigkeiten an als die von Micron/Crucial und Samsung, daher sollte es nicht wundern, wenn diese von Bugs verschont bleiben die bei der Nutzung neuer Features wie eben dem Queued TRIM auftreten. Dabei sei es mal dahingestellt, wo diese Bugs sind, auch die Sachen mit dem "nicht ein Geisterfahrer, Hunderte" natürlich weiter gilt, zumal die SSDs von Micron/Crucial ja nun wirklich nichts mit denen von Samsung gemeinsam haben. Sollten wirklich die Entwickler beider Firmen an der gleichen Stelle Fehler eingebaut haben?
 
Nach der manpage von hdparm zu Urteilen fragt -I die Informationen direkt vom Gerät ab und Modifikationen von Treibern bzw. Blacklist greift erst später ein.
Naja wir werden nach dem Firmwareupdate sehen wie die Differenz ausschaut.
 
Holt schrieb:
Das ist nett, aber smartctl nutzt mir nichts, was ich bräuche wäre ist nicht dabei, das wäre bei CDI der Abschnitt der mit
-- IDENTIFY_DEVICE ---------------------------------------------------------
anfängt und so aussieht, am Besten mit dem Header welche SSD es ist und der FW Information, also z.B. so:

Etwas anders formatiert aber die gleiche Information gibts mit smartctl --identify
 
Oh, schonwieder was gelernt


Code:
~$ sudo smartctl --identify /dev/sda
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.19.0-23-generic] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== ATA IDENTIFY DATA ===
Word     Bit     Value   Description

   0      -     0x0440   General configuration
   0     14:8     0x04   Vendor specific [RET-3]
   0      6          1   Not removable controller and/or device [OBS-6]

   1      -     0x3fff   Cylinders [OBS-6]

   2      -     0xc837   Specific configuration (0x37c8/738c/8c73/c837)

   3      -     0x0010   Heads [OBS-6]

   6      -     0x003f   Sectors per track [OBS-6]

  10-19   -     .        Serial number (String)
  10-13   .    foo
  14-17   .    bar
  18-19   .    baz

  23-26   -     .        Firmware revision (String)
  23-26   .     0x4d55:3031:2020:2020  "MU01    "

  27-46   -     .        Model number (String)
  27-30   .     0x4372:7563:6961:6c5f  "Crucial_"
  31-34   .     0x4354:3531:324d:3535  "CT512M55"
  35-38   .     0x3053:5344:3320:2020  "0SSD3   "
  39-42   .     0x2020:2020:2020:2020  "        "
  43-46   .     0x2020:2020:2020:2020  "        "

  47      -     0x8010   READ/WRITE MULTIPLE support
  47     15:8     0x80   Must be set to 0x80
  47      7:0     0x10   Maximum sectors per DRQ on READ/WRITE MULTIPLE

  48      -     0x4001   Trusted Computing feature set options
  48     15:14     0x1   Must be set to 0x1
  48      0          1   Trusted Computing feature set supported

  49      -     0x2f00   Capabilities
  49     13          1   Standard standby timer values supported
  49     11          1   IORDY supported
  49     10          1   IORDY may be disabled
  49      9          1   LBA supported
  49      8          1   DMA supported

  50      -     0x4001   Capabilities
  50     15:14     0x1   Must be set to 0x1
  50      0          1   Vendor specific minimum standby timer value

  53      -     0x0007   Field validity / Free-fall Control
  53      2          1   Word 88 (Ultra DMA modes) is valid
  53      1          1   Words 64-70 (PIO modes) are valid
  53      0          1   Words 54-58 (CHS) are valid [OBS-6]

  54      -     0x3fff   Current cylinders [OBS-6]

  55      -     0x0010   Current heads [OBS-6]

  56      -     0x003f   Current sectors per track [OBS-6]

  57-58   -     .        Current capacity in sectors (DWord) [OBS-6]
  57-58   .     0xfc10:00fb  (16514064)

  59      -     0xb110   Sanitize Device - READ/WRITE MULTIPLE support
  59     15          1   BLOCK ERASE EXT supported
  59     13          1   CRYPTO SCRAMBLE EXT supported
  59     12          1   Sanitize Device feature set supported
  59      8          1   Bits 7:0 are valid
  59      7:0     0x10   Current sectors per DRQ on READ/WRITE MULTIPLE

  60-61   -     .        User addressable sectors for 28-bit commands (DWord)
  60-61   .     0xffff:0fff  (268435455)

  63      -     0x0007   Multiword DMA modes
  63      2          1   Multiword DMA mode 2 and below supported
  63      1          1   Multiword DMA mode 1 and below supported
  63      0          1   Multiword DMA mode 0 supported

  64      -     0x0003   PIO modes
  64      1          1   PIO mode 4 supported
  64      0          1   PIO mode 3 supported

  65      -     0x0078   Minimum Multiword DMA cycle time per word in ns

  66      -     0x0078   Recommended Multiword DMA cycle time in ns

  67      -     0x0078   Minimum PIO cycle time without flow control in ns

  68      -     0x0078   Minimum PIO cycle time with IORDY flow control in ns

  69      -     0x40b0   Additional support
  69     14          1   Deterministic data after trim supported
  69      7          1   Reserved for IEEE 1667
  69      5          1   Trimmed LBA range(s) returning zeroed data supported
  69      4          1   Device encrypts all user data

  75      -     0x001f   Queue depth
  75      4:0     0x1f   Maximum queue depth - 1

  76      -     0x950e   Serial ATA capabilities
  76     15          1   READ LOG DMA EXT as equiv to READ LOG EXT supported
  76     12          1   NCQ priority information supported
  76     10          1   Phy Event Counters supported
  76      8          1   NCQ feature set supported
  76      3          1   SATA Gen3 signaling speed (6.0 Gb/s) supported
  76      2          1   SATA Gen2 signaling speed (3.0 Gb/s) supported
  76      1          1   SATA Gen1 signaling speed (1.5 Gb/s) supported

  77      -     0x00c6   Serial ATA additional capabilities
  77     15:7    0x001   Reserved for Serial ATA
  77      6          1   RECEIVE/SEND FPDMA QUEUED supported
  77      3:1      0x3   Current Serial ATA signal speed

  78      -     0x016c   Serial ATA features supported
  78     15:8     0x01   Reserved for Serial ATA
  78      6          1   Software Settings Preservation supported
  78      5          1   Hardware Feature Control supported
  78      3          1   Device initiated power management supported
  78      2          1   DMA Setup auto-activation supported

  79      -     0x004c   Serial ATA features enabled
  79      6          1   Software Settings Preservation enabled
  79      3          1   Device initiated power management enabled
  79      2          1   DMA Setup auto-activation enabled

  80      -     0x03f8   Major version number
  80      9          1   ACS-2 supported
  80      8          1   ATA8-ACS supported
  80      7          1   ATA/ATAPI-7 supported
  80      6          1   ATA/ATAPI-6 supported
  80      5          1   ATA/ATAPI-5 supported
  80      4          1   ATA/ATAPI-4 supported [OBS-8]
  80      3          1   ATA-3 supported [OBS-7]

  81      -     0x0028   Minor version number

  82      -     0x746b   Commands and feature sets supported
  82     14          1   NOP supported
  82     13          1   READ BUFFER supported
  82     12          1   WRITE BUFFER supported
  82     10          1   HPA feature set supported [OBS-ACS-3]
  82      6          1   Read look-ahead supported
  82      5          1   Volatile write cache supported
  82      3          1   Power Management feature set supported
  82      1          1   Security feature set supported
  82      0          1   SMART feature set supported

  83      -     0x7d09   Commands and feature sets supported
  83     15:14     0x1   Must be set to 0x1
  83     13          1   FLUSH CACHE EXT supported
  83     12          1   FLUSH CACHE supported
  83     11          1   DCO feature set supported [OBS-ACS-3]
  83     10          1   48-bit Address feature set supported
  83      8          1   SET MAX security extension supported [OBS-ACS-3]
  83      3          1   APM feature set supported
  83      0          1   DOWNLOAD MICROCODE supported

  84      -     0x6163   Commands and feature sets supported
  84     15:14     0x1   Must be set to 0x1
  84     13          1   IDLE IMMEDIATE with UNLOAD feature supported
  84      8          1   64-bit World Wide Name supported
  84      6          1   WRITE DMA/MULTIPLE FUA EXT supported
  84      5          1   GPL feature set supported
  84      1          1   SMART self-test supported
  84      0          1   SMART error logging supported

  85      -     0x746b   Commands and feature sets supported or enabled
  85     14          1   NOP supported
  85     13          1   READ BUFFER supported
  85     12          1   WRITE BUFFER supported
  85     10          1   HPA feature set supported [OBS-ACS-3]
  85      6          1   Read look-ahead enabled
  85      5          1   Write cache enabled
  85      3          1   Power Management feature set supported
  85      1          1   Security feature set enabled
  85      0          1   SMART feature set enabled

  86      -     0xbc09   Commands and feature sets supported or enabled
  86     15          1   Words 119-120 are valid
  86     13          1   FLUSH CACHE EXT supported
  86     12          1   FLUSH CACHE supported
  86     11          1   DCO feature set supported [OBS-ACS-3]
  86     10          1   48-bit Address features set supported
  86      3          1   APM feature set enabled
  86      0          1   DOWNLOAD MICROCODE supported

  87      -     0x6163   Commands and feature sets supported or enabled
  87     15:14     0x1   Must be set to 0x1
  87     13          1   IDLE IMMEDIATE with UNLOAD FEATURE supported
  87      8          1   64-bit World Wide Name supported
  87      6          1   WRITE DMA/MULTIPLE FUA EXT supported
  87      5          1   GPL feature set supported
  87      1          1   SMART self-test supported
  87      0          1   SMART error logging supported

  88      -     0x407f   Ultra DMA modes
  88     14          1   Ultra DMA mode 6 selected
  88      6          1   Ultra DMA mode 6 and below supported
  88      5          1   Ultra DMA mode 5 and below supported
  88      4          1   Ultra DMA mode 4 and below supported
  88      3          1   Ultra DMA mode 3 and below supported
  88      2          1   Ultra DMA mode 2 and below supported
  88      1          1   Ultra DMA mode 1 and below supported
  88      0          1   Ultra DMA mode 0 supported

  89      -     0x0001   SECURITY ERASE UNIT time

  90      -     0x0001   ENHANCED SECURITY ERASE UNIT time

  91      -     0x00fe   Current APM level

  92      -     0x1f66   Master password revision code

 100-103  -     .        User addressable sectors for 48-bit commands (QWord)
 100-103  .     0x12b0:3b9e:0000:0000  (1000215216)

 105      -     0x0008   Max blocks of LBA Range Entries per DS MANAGEMENT cmd

 106      -     0x6003   Physical sector size / logical sector size
 106     15:14     0x1   Must be set to 0x1
 106     13          1   Multiple logical sectors per physical sector
 106      3:0      0x3   2^X logical sectors per physical sector

 108-111  -     .        64-bit World Wide Name
 108-111  .     0x500a:0751:0e27:85d4

 119      -     0x401e   Commands and feature sets supported
 119     15:14     0x1   Must be set to 0x1
 119      4          1   DOWNLOAD MICROCODE with mode 3 supported
 119      3          1   READ/WRITE LOG DMA EXT supported
 119      2          1   WRITE UNCORRECTABLE EXT supported
 119      1          1   Write-Read-Verify feature set supported

 120      -     0x401c   Commands and feature sets supported or enabled
 120     15:14     0x1   Must be set to 0x1
 120      4          1   DOWNLOAD MICROCODE with mode 3 supported
 120      3          1   READ/WRITE LOG DMA EXT supported
 120      2          1   WRITE UNCORRECTABLE EXT supported

 128      -     0x812b   Security status
 128     15:9     0x40   Reserved
 128      8          1   Master password capability: 0 = High, 1 = Maximum
 128      5          1   Enhanced security erase supported
 128      3          1   Security frozen
 128      1          1   Security enabled
 128      0          1   Security supported

 129-159  -     .        Vendor specific
 129-132  .     0x4d55:3031:2e30:4e2e
 133-136  .     0x5330:0000:0000:0000
 137-140  .     0x3233:3535:2020:2020
 141-144  .     0x3030:5835:3231:3837
 145-148  .     0x2020:2020:4d54:4644
 149-152  .     0x4441:5435:3132:4d41
 153-156  .     0x5920:0000:0000:0000
 157-159  .     0x0000:0001:0000

 168      -     0x0005   Form factor
 168      3:0      0x5   Nominal form factor: -, 5.25, 3.5, 2.5, 1.8, <1.8

 169      -     0x0001   Data Set Management support
 169      0          1   Trim bit in DATA SET MANAGEMENT command supported

 206      -     0x0035   SCT Command Transport
 206      5          1   SCT Data Tables supported
 206      4          1   SCT Feature Control supported
 206      2          1   SCT Write Same supported
 206      0          1   SCT Command Transport supported

 209      -     0x4000   Alignment of logical sectors
 209     15:14     0x1   Must be set to 0x1

 212-213  -     .        Write-Read-Verify sector count mode 2 (DWord)
 212-213  .     0x0000:0001  (65536)

 217      -     0x0001   Nominal media rotation rate

 222      -     0x107f   Transport major version number
 222     15:12     0x1   Transport type: 0x0 = Parallel, 0x1 = Serial
 222      6          1   Reserved    | SATA 3.1
 222      5          1   Reserved    | SATA 3.0
 222      4          1   Reserved    | SATA 2.6
 222      3          1   Reserved    | SATA 2.5
 222      2          1   Reserved    | SATA II: Extensions
 222      1          1   ATA/ATAPI-7 | SATA 1.0a
 222      0          1   ATA8-APT    | ATA8-AST

 234      -     0x0001   Minimum blocks per DOWNLOAD MICROCODE mode 3 command

 235      -     0x00ff   Maximum blocks per DOWNLOAD MICROCODE mode 3 command

 236-254  -     .        Reserved
 236-239  .     0x0000:0000:0000:0000
 240-243  .     0x0000:0000:0000:4000
 244-254  .     0x0000:0000:0000:00...

 255      -     0x7fa5   Integrity word
 255     15:8     0x7f   Checksum
 255      7:0     0xa5   Signature
 
Rumo schrieb:
Etwas anders formatiert aber die gleiche Information gibts mit smartctl --identify
Wow, danke, dass passt ja schon sehr gut, da wird ja auch schon alles aufgeschlüsselt, zumindest das was die jeweilige Platte unterstützt. Wenn die manpage von hdparm auch noch stimmt, dann wäre das ja super.

Piktogramm, Du hast den Kernel selbst compiliert wenn ich das richtg deute, war die SSD auf der Blacklist?


Um noch mal auf die Frage von Wolfsrabe einzugehen: Wie schon gesagt ist da die Frage welche Konfigurationen (vor allem auch im Bezug auf mdraid) die Leute hatten die die Probleme gemeldet haben, welchen dann zur Aufnahme der SSD in die Blacklist geführt haben. Der hier mit der m500 MU05 in einem Intel NUC dürfte aber wohl kaum ein RAID benutzt haben. Im im nächsten Kommentar brichtet einer von "it can get you REAL TROUBLE after deleting large files, BROKEN PARTITION TABLE included." Da Partitionstabellen ja nun gewöhnlich nicht sehr oft überschrieben werden, klingt das nicht nach einem Problem der Reihenfolge der Befehlsverarbeitung (also wohl nicht timing related), sondern nach einem Pointerproblem genau wie dem was Samsung bei diesem Bug gefunden hat. Also das ein anderer Pointer auf den gleichen Adressbereich schreibt, sei es wegen Buffer Overflow oder weil es auch nur ein flacher Klone ist und über den Pointer dann in den Puffer geschrieben wird, wenn er eigentlich nicht mehr verändert werden dürfte.

Das passt auch zu der "failed command: SEND FPDMA QUEUED" Fehlermeldung in dem Bugreport, denn der Befehl soll dann einen Fehler ausgeben, wenn die in Word 105 definierte maximale Anzahl überschritten wurde oder ein ungültiger Adressbereich angegeben ist. Zumindest letzeres ist natürlich nicht unwahrscheinlich, wenn die Daten wild überschrieben werden und damit wäre der Fehler wahrschlich eher bei Linux als in der SSD FW zu suchen, denn wie es sich darstellt werd da zuweilen unsinnge LBAs in die TRIM Befehle geschrieben und je nachdem ob die innerhalb des Adressbereiches der SSD liegen wird da denn eben getrimmt was Datenverlust bedeuten kann wenn das was stand oder es gibt bei Adressen außerhalb des LBA Bereiches dann eben die Fehlermeldung. Da müssten die Linux Kernelentwickler noch mal einen Filter direkt "am Ausgang" der Befehle einbauen und prüfen ob alle LBAs in Queued TRIM Befehlen wirklich unterhalb von Max LBA der SSD liegen, wenn nicht haben sie den Bug auf ihrer Seite. Oder Samsung müsste da noch mal ran und die bei der SSD eigehenden Befehle entsprechend potokollieren und analysieren, denn die Möglichkeit werden sie ja sicher haben.

Danke euch beiden schon schon jetzt einmal für die Unterstützung, auch wenn wir nicht immer einer Meinung waren und auch mal die Smathandschuhe in der Schublade gelassen haben (wo sind meine eigentlich :D), so ist es doch der Sinn eines technischen Forums vor allem auch technische Frage zu klären und dafür die Informationen von allen Seiten zusammen zu führen, damit alle was davon haben, mehr über das Thema lernen und es so besser verstehen können. Der Aspekt kommt leider bei nicht wenigen Usern und in vielen Themen immer mehr unter die Räder.
 
Das der Kernel als "selbst kompiliert" angezeigt wird hängt wohl eher daran, dass irgend eine Kernelerweiterung installiert ist. Ich vermute, dass VirtualBox daran schuld ist. Der Kernel ist ansonsten jener den Canonical mit Ubuntu ausliefert und die Blacklist wird entsprechend enthalten sein.


Ansonsten Holt, du wirst im Großen und Ganzen nicht persönlich oder gar beleidigend, nur sehr deutlich. Ich finde es ok :)
 
Hallo alle,

sorry diesen fachlich recht tiefgehenden Thread ein wenig zu missbrauchen. Ich habe mir gestern eine neue Samsung SSD (850 Pro mit 256 GB) plus HDD gekauft und mein System neu aufgesetzt. Windows läuft schon, ich wollte jetzt eigentlich Linux (Ubuntu Desktop 15.04) installieren. Allerdings hat mich ein Kollege auf dieses Bug-Thema aufmerksam gemacht. Ich bin nicht ganz unbeleckt, aber um das komplett zu verstehen ist mein Wissen bei Hardware nicht tief genug.

Leider habe ich es auf eigene Faust nicht 100% verstanden. Muss ich mir jetzt Sorgen machen ein Linux Desktop-System auf meiner SSD zu installieren? Muss ich den Kernelpatch manuell installieren um sicher zu sein oder ist der im aktuellen Kernel schon drin? Wie kann ich das denn nachprüfen? Oder war der Bug jetzt tatsächlich nur in ganz bestimmten Nutzungssituationen auf Servern und ich kann entspannt meinen Desktop aufsetzen?

Vielen Dank für mögliche Erklärungen und sorry für die dummen Fragen ;)

Viele Grüße
Jackie
 
Vielen Dank für die schnelle Antwort. Meiner Meinung nach kann man Samsung da wenn dann nur vorwerfen, dass sie keine leicht zu ergooglende Consumer-Information zusammenstellen, so dass man nicht Tech-Foren belästigen muss. :D
 
Der Bug hier betrifft nur SSDs die mit mdraid in einer RAID Konfiguration laufen, das ist bei nur einer SSD wohl kaum der Fall und macht auch keinen Sinn. Ob und wie weit es noch einen zweiten Bug bzgl. Queued TRIM gibt und welche SSDs davon betroffen sind, ob der im Kernel liegt oder doch in der FW der SSDs, dazu kann man noch nichts konkretes sagen. Denk an Datensicherung, dann kann im Zweifel wenigstens kein Verlust wichtiger Daten eintreten (Backups sollte man immer haben, es gibt viel mehr Bedrohungen für die Daten als nur HW-Ausfälle, FW- oder OS-Bugs) und wenn Du Probleme vermeiden willst, deaktiviere das Online TRIM (die option discard in der /etc/fstab entfernen) und trimme ab und zu mit fstrim manuell bzw. per cron-job.
 
Ja, backups passen schon, ich trenne System und Daten ohnehin, gerade auf Linux liegt mein home sowieso auf einer HDD. Es geht mir mehr drum, dass ich zum einen nicht das Geld umsonst ausgegeben haben will - ich hab den Aufpreis auf eine 850 pro auch wegen der Zuverlässigkeit bezahlt - und ich zum anderen nicht demnächst schon wieder das System neu installieren möchte.
 
@Jackie777

Home auf einer HDD zu legen macht wenig Sinn. Der Zugriff auf die Dateien und Konfigurationen dauert zu lange.
 
Zurück
Oben