UtfÀrdandet av det felsÀkra filsystemet LittleFS 2.10

UtgÄvan av projektet LittleFS 2.10 har publicerats, vilket utvecklar ett kompakt filsystem för inbyggda enheter och mikrokontroller. Filsystemet skapades ursprungligen av ARM för operativsystemet Mbed OS men har sedan dess separerats till ett eget projekt. Filsystemets kod Àr skriven i C och distribueras under BSD-licens. Den referensimplementation av LittleFS levereras som ett C-bibliotek, baserat pÄ vilket en FUSE-modul och omslag för olika programmeringssprÄk har skapats.

Funktioner i LittleFS:

  • LĂ„ga resurskrav och stöd för drift under begrĂ€nsade RAM-bytestorlekar. I implementationen av LittleFS anvĂ€nds enbart statiskt definierade buffrar (utan dynamisk minnesallokering) och rekursiva anrop anvĂ€nds inte, vilket gör att storleken pĂ„ den anvĂ€nda RAM-minnet och LittleFS:s styrstrukturer pĂ„ lagringsenheten alltid förblir konstant, oavsett vad som skrivs till filsystemet och hur stort lagringsutrymmet Ă€r.
  • Verktyg för utslitsutjĂ€mning av Flash-lagringsmedia (wear leveling), vilket minimerar omanvĂ€ndning av block och jĂ€mnt distribuerar blockrensningsoperationer pĂ„ flashminnet, vars kontroller inte tillhandahĂ„ller en lösning för detta problem.
  • Mycket hög motstĂ„ndskraft mot fel — filsystemet betraktar oplanerat avbrott (avslutning genom strömavbrott) som en normal situation och garanterar att lagringen pĂ„ disken Ă€r intakt vid varje givet tillfĂ€lle. För att förhindra integritetsbrott och dataförlust anvĂ€nds mekanismen copy-on-write (COW), dĂ€r Ă€ndringar inte skriver över information utan sparas pĂ„ en ny plats.
  • Atomicitet i operationer sĂ„som radering och ominamning, Ă€ven om strömmen försvinner under deras genomförande. FilĂ€ndringar skrivs till disken endast efter att sync eller close har anropats. Inkonsekvenser orsakade av operationer som inte kan utföras atomĂ€rt hanteras av en speciell deorphan-behandlare, som gĂ„r igenom hela filsystemets trĂ€d efter inladdning.
  • Stöd för POSIX-liknande funktioner för arbete med filer och kataloger.

InnehÄllet i filerna i LittleFS representeras av COW-listor CTZ, vilket ger en komplexitetsnivÄ pÄ O(1) vid tillÀgg och O(nlogn) vid lÀsning. Allokering av block sker genom att skanna filsystemet efter anvÀnda block i ett omrÄde av fast storlek, som lagras i form av en bitvektor. För att förenkla skanningen Àr alla mappar en del av en lÀnkad lista som strÀcker sig över hela filsystemet. Om ett fel uppstÄr vid skrivning av ett block allokeras ett nytt block och data överförs till det.

Bland förÀndringarna i den nya versionen av LittleFS:

  • Koden för tolkning av filvĂ€gar har omarbetats för att Ă„terskapa filsystemets beteende nĂ€rmare POSIX-system och anvĂ€ndarnas förvĂ€ntningar i situationer som att avsluta vĂ€gen med en snedstreck, hantera tomma vĂ€gar och navigera utanför filsystemets rot.
  • TvĂ„ nya exempel pĂ„ blockenheter ramcrc32bd och ramrsbd har lagts till, dĂ€r en felkorrigeringsmekanism, kompatibel med LittleFS, har implementerats. I sin nuvarande form saknar LittleFS stöd för att identifiera och korrigera fel, och dessa operationer flyttas till blockenheternas nivĂ„.
  • Funktionen lfs_mkdir har fĂ„tt stöd för avslutande snedstreck, dvs. anropet lfs_mkdir("a/") resulterar nu inte lĂ€ngre i ett felmeddelande.
  • I funktionerna lfs_stat och lfs_getattr returneras nu ett fel nĂ€r avslutande snedstreck anvĂ€nds om den existerande vĂ€gen i filsystemet inte Ă€r en mapp.
  • Försök att öppna en fil med ett avslutande snedstreck i namnet genom funktionen lfs_file_open kommer nu att leda till felet LFS_ERR_NOTDIR om filen inte Ă€r en mapp i filsystemet, LFS_ERR_ISDIR om namnet refererar till en mapp i filsystemet, och LFS_O_CREAT om filen inte existerar.
  • Försök att komma Ă„t utanför filsystemets rot, till exempel lfs_stat("/../a"), kommer nu att resultera i ett felmeddelande.
  • Att ange en tom vĂ€g Ă€r nu inte lĂ€ngre en synonym för att referera till rotmappen, dvs. anropet lfs_stat("") kommer att leda till ett felmeddelande.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster