• Förbättrat stöd för Apple HFS/HFS+ i Linux 6.17 – omfattande buggfixar och räddad funktionalitet

    Under lång tid har HFS och HFS+ – Apples äldre filsystem – levt i skymundan i Linuxvärlden. Drivrutinerna har varit övergivna i över ett decennium och har orsakat fler problem än de löst. Diskussioner fördes tidigare i år om att helt slopa stödet i Linuxkärnan, men istället har flera utvecklare tagit initiativ till att återuppliva och stabilisera koden. Resultatet börjar nu märkas i Linux 6.17.

    I samband med merge-fönstret rapporterade utvecklaren Viacheslav Dubeyko att det fortfarande finns omkring 221 öppna buggar i HFS/HFS+-drivrutinerna. Många av dessa har identifierats genom testsviten xfstests, som ofta lämnar volymer i ett korrupt tillstånd. Den pågående kodgranskningen har dock lett till konkreta förbättringar.

    Exempel på viktiga åtgärder:

    • Kodstädning i I/O-hantering:
      Johannes Thumshirn har förbättrat strukturen i funktionen hfsplus_submit_bio() för ökad läsbarhet och robusthet.
    • Metadatahantering förbättrad:
      Tetsuo Handa har åtgärdat ett syzbot-rapporterat problem i hfsplus_create_attributes_file() som uppstod när metadata i attributfilen blivit korrupt.
    • Onödiga varningar borttagna:
      Yangtao Li har tagit bort en onödig WARN_ON()-anrop i hfsplus_free_extents() som kunde orsaka falska felrapporter vid fria block.
    • Fler minnesrelaterade fel har rättats:
      • Problem med slab out-of-bounds i hfs_bnode_read() och hfsplus_bnode_read() har åtgärdats genom validering av offset och längd innan åtkomst till B-trädnoder.
      • Överläst stränglängd i hfsplus_uni2asc() kunde leda till minnesfel om namnposter i B-trädet var korrupta – detta är nu fixat.
      • En general protection fault i hfs_find_init() vid skapandet av B-trädsobjekt har eliminerats.
    • Bättre kompatibilitet med testsystem:
      Den generiska testcasen generic/001 lyckas nu köra utan fel, tack vare att raderade B-trädnoder rensas korrekt.

    Framtiden för HFS/HFS+ i Linux

    Den senaste utvecklingen innebär ett lyft för användare som fortfarande arbetar med äldre Mac-media, såsom externa diskar och arkivformat. Istället för att förlora stödet helt får HFS och HFS+ nu en välbehövlig modernisering, vilket också gynnar filsystemstester och verktygsutveckling under Linux.

    Noterbart är att Linux 6.17 också innehåller förbättringar för FireWire (IEEE-1394) – ett gränssnitt som historiskt varit vanligt på Apple-datorer.

    https://www.phoronix.com/news/Apple-HFS-Linux-6.17

    FAKTARUTA: Vad är HFS och HFS+?

    HFS (Hierarchical File System)
    Introducerades av Apple 1985 som standardfilsystem för Mac OS.
    – Bygger på en B-trädsstruktur för kataloger och filer
    – Stödjer filmetadata via så kallade ”resource forks”
    – Har begränsat stöd för moderna funktioner som filrättigheter och långa filnamn

    HFS+
    Lanserades 1998 som en förbättrad version av HFS, ibland kallad ”Mac OS Extended”.
    – Stöd för längre filnamn (upp till 255 tecken)
    – Unicode-baserad namngivning
    – Effektivare hantering av stora volymer och filer
    – Införde journalföring (HFS+ Journaled)

    Användning och efterföljare
    HFS+ var Apples primära filsystem i över 20 år – från Mac OS 8 till macOS Sierra.
    2017 ersattes det av APFS (Apple File System) i macOS High Sierra för SSD-baserade system.

    Under Linux
    – Linuxkärnan har haft stöd för både HFS och HFS+ i läs-/skrivläge
    – Stödet har varit bristfälligt under lång tid och lämnades länge utan aktivt underhåll
    – Från Linux 6.17 påbörjades en ny satsning på att stabilisera och bevara stödet

Förbättrat stöd för Apple HFS/HFS+ i Linux 6.17 – omfattande buggfixar och räddad funktionalitet

Under lång tid har HFS och HFS+ – Apples äldre filsystem – levt i skymundan i Linuxvärlden. Drivrutinerna har varit övergivna i över ett decennium och har orsakat fler problem än de löst. Diskussioner fördes tidigare i år om att helt slopa stödet i Linuxkärnan, men istället har flera utvecklare tagit initiativ till att återuppliva och stabilisera koden. Resultatet börjar nu märkas i Linux 6.17.

I samband med merge-fönstret rapporterade utvecklaren Viacheslav Dubeyko att det fortfarande finns omkring 221 öppna buggar i HFS/HFS+-drivrutinerna. Många av dessa har identifierats genom testsviten xfstests, som ofta lämnar volymer i ett korrupt tillstånd. Den pågående kodgranskningen har dock lett till konkreta förbättringar.

Exempel på viktiga åtgärder:

  • Kodstädning i I/O-hantering:
    Johannes Thumshirn har förbättrat strukturen i funktionen hfsplus_submit_bio() för ökad läsbarhet och robusthet.
  • Metadatahantering förbättrad:
    Tetsuo Handa har åtgärdat ett syzbot-rapporterat problem i hfsplus_create_attributes_file() som uppstod när metadata i attributfilen blivit korrupt.
  • Onödiga varningar borttagna:
    Yangtao Li har tagit bort en onödig WARN_ON()-anrop i hfsplus_free_extents() som kunde orsaka falska felrapporter vid fria block.
  • Fler minnesrelaterade fel har rättats:
    • Problem med slab out-of-bounds i hfs_bnode_read() och hfsplus_bnode_read() har åtgärdats genom validering av offset och längd innan åtkomst till B-trädnoder.
    • Överläst stränglängd i hfsplus_uni2asc() kunde leda till minnesfel om namnposter i B-trädet var korrupta – detta är nu fixat.
    • En general protection fault i hfs_find_init() vid skapandet av B-trädsobjekt har eliminerats.
  • Bättre kompatibilitet med testsystem:
    Den generiska testcasen generic/001 lyckas nu köra utan fel, tack vare att raderade B-trädnoder rensas korrekt.

Framtiden för HFS/HFS+ i Linux

Den senaste utvecklingen innebär ett lyft för användare som fortfarande arbetar med äldre Mac-media, såsom externa diskar och arkivformat. Istället för att förlora stödet helt får HFS och HFS+ nu en välbehövlig modernisering, vilket också gynnar filsystemstester och verktygsutveckling under Linux.

Noterbart är att Linux 6.17 också innehåller förbättringar för FireWire (IEEE-1394) – ett gränssnitt som historiskt varit vanligt på Apple-datorer.

https://www.phoronix.com/news/Apple-HFS-Linux-6.17

FAKTARUTA: Vad är HFS och HFS+?

HFS (Hierarchical File System)
Introducerades av Apple 1985 som standardfilsystem för Mac OS.
– Bygger på en B-trädsstruktur för kataloger och filer
– Stödjer filmetadata via så kallade ”resource forks”
– Har begränsat stöd för moderna funktioner som filrättigheter och långa filnamn

HFS+
Lanserades 1998 som en förbättrad version av HFS, ibland kallad ”Mac OS Extended”.
– Stöd för längre filnamn (upp till 255 tecken)
– Unicode-baserad namngivning
– Effektivare hantering av stora volymer och filer
– Införde journalföring (HFS+ Journaled)

Användning och efterföljare
HFS+ var Apples primära filsystem i över 20 år – från Mac OS 8 till macOS Sierra.
2017 ersattes det av APFS (Apple File System) i macOS High Sierra för SSD-baserade system.

Under Linux
– Linuxkärnan har haft stöd för både HFS och HFS+ i läs-/skrivläge
– Stödet har varit bristfälligt under lång tid och lämnades länge utan aktivt underhåll
– Från Linux 6.17 påbörjades en ny satsning på att stabilisera och bevara stödet