Sintomo
Su alcune configurazioni Linux, eseguire il comando:
> fstrim -v /
può causare un crash del kernel immediato, accompagnato dal messaggio `Killed` e da una traccia nel log (`dmesg`) simile a questa:
RIP: 0010:0x0
Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6.
Call Trace:
raid10_make_request+0xbf1/0xd20
...
Il problema si verifica anche su altri mount point e non è legato a mancanza di memoria o corruzione del filesystem.
Causa
Il problema è causato da un bug noto nel driver md/raid10 del kernel Linux: quando viene eseguito un comando TRIM (come `fstrim`) su un volume configurato in RAID 10 software, il kernel tenta di accedere ad un puntatore funzione nullo, provocando un kernel panic.
Questa anomalia è stata segnalata anche in altre distribuzioni (es. Ubuntu, bug #2117395) e si verifica su filesystem ext4 montati sopra array RAID 10.
Perché succede
Il supporto TRIM (discard) non è sempre correttamente implementato nel livello RAID 10 software. Il kernel presume l'esistenza di una funzione per gestire l'operazione `REQ_OP_DISCARD`, ma questa non è definita in alcune configurazioni. Il risultato è un accesso a indirizzo nullo (0x0) e il crash del sistema.
Soluzioni consigliate
Non usare, momentaneamente, `fstrim` su RAID 10.
Rimuovere l'opzione `discard` da `/etc/fstab` per evitare TRIM automatici:
diff
- /dev/md0 / ext4 defaults,discard 0 1
+ /dev/md0 / ext4 defaults 0 1