Udgivelsen af den fejltolerante filsystem LittleFS 2.10.

Udgivet er version 2.10 af LittleFS-projektet, der udvikler et kompakt filsystem til indlejrede enheder og mikrokontrollere. Oprindeligt blev filsystemet lavet af ARM til operativsystemet Mbed OS, men blev senere adskilt som et selvstændigt projekt. Filsystemets kode er skrevet i C og distribueres under BSD-licensen. Den referenceimplementation af LittleFS leveres som et C-bibliotek, som der er bygget et FUSE-modul og bindings til forskellige programmeringssprog ovenpå.

Funktioner ved LittleFS:

  • Lav ressourcetræk og understøttelse til drift under begrænset RAM-størrelse. I implementationen af LittleFS anvendes kun statisk definerede buffere (uden dynamisk hukommelsesallokering) og der anvendes ikke rekursive kald, hvilket sikrer, at den forbrugte RAM og de hjælpestruktur der anvendes af LittleFS på lagermediet altid forbliver konstant, uanset hvad der skrives til filsystemet og hvilken størrelse lageret har.
  • Værktøjer til slidudjævning af Flash-lagringsenheder, der muliggør minimal genbrug af blokke og jævnt fordeler blokrensningsoperationer på Flash-hukommelsen, hvis controller ikke tilbyder en løsning på denne opgave.
  • Meget høj modstandsdygtighed over for fejl — Filsystemet betrager et tilfældigt ophør af drift (nedlukning ved strømafbrydelse) som en normal situation og garanterer, at opbevaringen på disken altid er i intakt tilstand. For at undgå datakorruption og datatab anvendes en copy-on-write (COW) mekanisme, hvor ændringer ikke overskriver eksisterende information, men gemmes på et nyt sted.
  • Atomicitet ved udførelse af operationer såsom sletning og omdøbning, selv i tilfælde af strømafbrydelse under udførelsen. Ændringer i filer skrives kun til disk efter kald af sync eller close. Uoverensstemmelser forårsaget af operationer, der ikke kan udføres atomisk, løses med en speciel deorphan-håndterer, der gennemgår hele filsystemets træ efter indlæsning.
  • Understøttelse af POSIX-lignende funktioner til arbejde med filer og mapper.

Indholdet af filer i LittleFS præsenteres som COW-lister CTZ, der sikrer en kompleksitetsgrad på O(1) ved tilføjelse og O(nlogn) ved læsning. Tildeling af blokke sker ved at scanne FS for brugte blokke i et område af fast størrelse, gemt som en bitvektor. For at forenkle scanning er alle kataloger en del af en sammenkædet liste, der dækker hele filsystemet. Hvis der opstår en fejl ved skrivning af en blok, tildeles en ny blok, og dataene flyttes til den.

Blandt ændringerne i den nye version af LittleFS:

  • Koden til parsing af filstier er blevet redesignet, hvilket har gjort adfærden af FS tættere på POSIX-systemer og brugernes forventninger i tilfælde som afslutning af stien med skråstreg, behandling af tomme stier og navigation uden for rod-FS.
  • To nye eksempler på blokkeringsenheder, ramcrc32bd og ramrsbd, er blevet tilføjet, hvor mekanismen til fejlkorrigering, der er kompatibel med LittleFS, er implementeret. I sin nuværende form mangler LittleFS støtte til fejldetektion og -korrektion, og disse operationer er flyttet til niveauet for blokkeringsenheder.
  • Funktionen lfs_mkdir har fået støtte til afsluttende skråstreger, dvs. kaldet lfs_mkdir("a/") resulterer nu ikke i en fejl.
  • Funktionerne lfs_stat og lfs_getattr viser nu en fejl ved brug af afsluttende skråstreger, hvis den eksisterende sti i FS ikke er et katalog.
  • Forsøg på at åbne en fil gennem funktionen lfs_file_open med en afsluttende skråstreg i navnet vil nu føre til fejlen LFS_ERR_NOTDIR, hvis filen ikke er et katalog i FS, LFS_ERR_ISDIR, hvis navnet henviser til et katalog i FS, og LFS_O_CREAT, hvis filen ikke eksisterer.
  • Forsøg på at tilgå uden for rod-FS, for eksempel lfs_stat("/.../a"), vil nu resultere i en fejl.
  • Angivelse af en tom sti er ikke længere en synonym for at tilgå rodkataloget, dvs. kaldet lfs_stat("") vil resultere i en fejl.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster