Vai al contenuto

Linux 7.4, il driver NVMe per i Mac M4 spunta nella pull request block di Axboe

Schema del chip Apple M4 con evidenziati i core CPU ad alte prestazioni ed efficienza.
Foto: Apple

Il supporto al controller NVMe ANS2 dei chip Apple M4 (t8132) compare tra le novità che Jens Axboe ha proposto a Linus Torvalds per la merge window di Linux 7.4, nella pull request «Block updates for 7.4-rc» inviata il 21 ottobre 2026 sulla lista linux-block. Chi usa Linux su un Mac con M4 potrebbe dunque trovare nel kernel il driver per il proprio controller di storage; per tutti gli altri la pull request porta modifiche a NVMe, ai dischi a zone e a ublk. Si tratta di una proposta di integrazione: la fonte non indica una data di rilascio per Linux 7.4.

Il driver per i Mac con chip M4

Il supporto passa dal ramo NVMe. Gli interventi indicati sono due, entrambi di Yureka Lilian: la patch «nvme: apple: add t8132 (M4) ANS2 NVMe support» e l’aggiunta della compatible apple,t8132-nvme-ans2 ai dt-bindings. Il testo non precisa quali modelli di Mac siano coinvolti.

NVMe: multipath, TCP e target

Sul lato host il lavoro più visibile riguarda multipath e trasporto TCP:

  • nvme-multipath espone in sysfs gli attributi path_state, iopolicies e fail_on_ctrl_loss, con correzioni alla valutazione dello stato dei percorsi (failfast e ANA);
  • per i sottosistemi di discovery il multipath riporta l’iopolicy «none»;
  • nvme-tcp parallelizza l’allocazione e l’avvio delle code di I/O e usa il network namespace del chiamante.

Il target (nvmet) riceve la correzione di un use-after-free nel passthru, con relativo rework, e quelle di use-after-free nel preempt delle reservation. Si aggiunge il supporto al keep alive basato sul traffico, configurabile da configfs.

Autenticazione NVMe e segreti in sysfs

Il target nvmet richiede l’autenticazione prima del property set, rifiuta i payload AUTH_SEND troppo piccoli e serializza l’accesso allo stato DH-HMAC-CHAP per evitare un use-after-free. Lato host è presente la patch «nvme-auth: fail when the controller does not authenticate itself», di cui la pull request riporta solo il titolo. Gli attributi sysfs dei segreti DH-HMAC-CHAP diventano leggibili solo da root.

I/O sui block device e scritture atomiche

Tal Zussman firma il rework dell’I/O bufferizzato e diretto sui block device. Secondo la pull request:

  • si usa iomap_dirty_folio;
  • i_rwsem viene preso nel fallback della scrittura diretta e nella splice read;
  • il percorso di lettura bufferizzata rispetta IOCB_NOWAIT;
  • le scritture atomiche non ripiegano più sull’I/O bufferizzato.

Per le scritture atomiche la dimensione è limitata dai vincoli del buffer PI e l’operazione fallisce se il pin delle pagine risulta parziale. Le scritture dirette O_DSYNC saltano il flush ridondante e REQ_FUA è usato solo se il dispositivo lo supporta.

Zone, ublk e controllo dell’I/O

Damien Le Moal rivede la rivalidazione delle zone di grandi dimensioni: la procedura viene serializzata, gli zone write plug vengono scartati e l’operazione ritentata quando cambia la capacità. Le condizioni read-only e offline si propagano ai plug e le zone offline o read-only sono trattate come «dead».

Per ublk ci sono interventi di robustezza sui round FETCH annullati e sul passaggio a live con comandi io annullati; viene eliminato lo scheduler I/O predefinito e si aggiungono selftest. blk-iocost guadagna il costo dei flush, con il parametro flushiops del modello, e conta le zone append come scritture.

Altre modifiche e conflitti di merge

  • gli attributi GPT sono memorizzati come valore grezzo;
  • viene rimosso il supporto allo scambio dei file descriptor dei dispositivi loop;
  • il driver swim riceve una revisione profonda e il floppy alcune correzioni, tramite un pull da Denis Efremov.

Axboe avverte infine che il merge darà conflitti in block/bio.c e block/blk-zoned.c, e allega la risoluzione che dice di avere in linux-next da tempo.

Leggi anche