Lëshimi i sistemit të skedarëve me qëndrueshmëri LittleFS 2.10

ËshtĂ« publikuar versioni i projektit LittleFS 2.10, i cili zhvillon njĂ« sistem tĂ« kompakt tĂ« skedarĂ«ve pĂ«r pajisje tĂ« integruara dhe mikro-kontrollorĂ«. Originari i kĂ«tij sistemi tĂ« skedarĂ«ve u krijua nga kompania ARM pĂ«r sistemin operativ Mbed OS, por mĂ« vonĂ« u ndan nĂ« njĂ« projekt tĂ« veçantĂ«. Kodi i FS Ă«shtĂ« shkruar nĂ« gjuhĂ«n C dhe shpĂ«rndahet nĂ«n licencĂ«n BSD. Implementimi referues i LittleFS vjen si njĂ« bibliotekĂ« nĂ« gjuhĂ«n C, mbi bazĂ«n e sĂ« cilĂ«s Ă«shtĂ« ndĂ«rtuar njĂ« modul FUSE dhe lidhje pĂ«r gjuhĂ« tĂ« ndryshme programimi.

Karakteristikat e LittleFS:

  • KĂ«rkesa tĂ« ulta pĂ«r burime dhe mbĂ«shtetje pĂ«r funksionimin nĂ« kushte me madhĂ«si tĂ« kufizuar tĂ« RAM-it. Implementimi i LittleFS pĂ«rdor vetĂ«m bufer tĂ« definuar nĂ« mĂ«nyrĂ« statike (pa alokim dinamik tĂ« memories) dhe nuk pĂ«rdor thirrje rekursive, gjĂ« qĂ« siguron se sasia e memories operative dhe struktura shĂ«rbyese tĂ« LittleFS nĂ« mbajtĂ«s mbetet gjithmonĂ« e qĂ«ndrueshme, pavarĂ«sisht se çfarĂ« shkruhet nĂ« FS dhe madhĂ«sisĂ« sĂ« depozitĂ«s.
  • Mjetet pĂ«r nivelimin e gĂ«sheve tĂ« mbajtĂ«sve Flash (wear leveling), qĂ« lejojnĂ« minimizimin e ripĂ«rdorimit tĂ« blloqeve dhe shpĂ«rndarjen e barabartĂ« tĂ« operacioneve tĂ« pastrimit tĂ« blloqeve nĂ« memories Flash, kontrolli i tĂ« cilĂ«s nuk ofron zgjidhje pĂ«r kĂ«tĂ« problem.
  • QĂ«ndrueshmĂ«ri shumĂ« e lartĂ« ndaj dĂ«shtimeve — FS e konsideron ndalimin e rastĂ«sishĂ«m tĂ« funksionimit (ndalimi i energjisĂ«) si njĂ« situatĂ« normale dhe garanton qĂ« ruajtja nĂ« disk tĂ« jetĂ« nĂ« njĂ« gjendje tĂ« plotĂ« nĂ« çdo moment. PĂ«r tĂ« shmangur shkeljen e integritetit dhe humbjen e tĂ« dhĂ«nave, pĂ«rdoret mekanizmi copy-on-write (COW), i cili ruan ndryshimet nĂ« njĂ« vend tĂ« ri, nĂ« vend qĂ« tĂ« ripĂ«rshkruajĂ« informacionin.
  • Ato janĂ« operacione atomike, si fshirja dhe emĂ«rimi, edhe nĂ« rast se ndalet energjia gjatĂ« ekzekutimit tĂ« tyre. Ndryshimet e skedareve shpĂ«rndahen nĂ« disk vetĂ«m pas thirjes sĂ« sync ose close. Pasiguri tĂ« shkaktuara nga operacione qĂ« nuk mund tĂ« kryhen nĂ« mĂ«nyrĂ« atomike u zgjidhen nga njĂ« trajtues i veçantĂ« deorphan, i cili kalon nĂ«pĂ«r tĂ« gjithĂ« pemĂ«n e FS pas ngarkimit.
  • MbĂ«shtetje pĂ«r funksione tĂ« ngjashme me POSIX pĂ«r punĂ«n me skedarĂ« dhe katalogĂ«.

Përmbajtja e skedarëve në LittleFS paraqitet me lista COW-CTZ, duke siguruar një ndërlikim O(1) për shtimin dhe O(nlogn) për leximin. Alokimi i blloqeve realizohet përmes skanimit të FS për blloqet e përdorura në një zonë me madhësi fiks, të ruajtur si një vektor bitësh. Për të lehtësuar skanimin, të gjithë katalogët janë pjesë e një liste të lidhur që përfshin të gjithë sistemin e skedarëve. Nëse gjatë shkrimit të një blloku përcaktohet një gabim, alokohet një bllok i ri dhe të dhënat transferohen në të.

Ndryshimet në versionin e ri të LittleFS:

  • Kodi pĂ«r pĂ«rpunimin e rrugĂ«ve tĂ« skedarĂ«ve Ă«shtĂ« riparuar, duke pĂ«rafruar sjelljen e FS me sistemet POSIX dhe pritshmĂ«ritĂ« e pĂ«rdoruesve nĂ« situata tĂ« tilla si pĂ«rfundimi i rrugĂ«s me slash, pĂ«rpunimi i rrugĂ«ve bosh dhe navigimi pĂ«rtej rrĂ«njĂ«s sĂ« FS.
  • JanĂ« shtuar dy shembuj tĂ« rinj tĂ« pajisjeve bllok, ramcrc32bd dhe ramrsbd, tĂ« cilat implementojnĂ« njĂ« mekanizĂ«m korrekcioni tĂ« gabimeve, tĂ« pĂ«rshtatshĂ«m pĂ«r LittleFS. NĂ« formĂ«n e saj aktuale, nĂ« vetĂ« FS LittleFS nuk ka mbĂ«shtetje pĂ«r pĂ«rcaktimin dhe korrigjimin e gabimeve dhe kĂ«to operacione transferohen nĂ« nivelin e pajisjeve bllok.
  • NĂ« funksionin lfs_mkdir Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r slashet pĂ«rfundimtarĂ«, pra thirrja lfs_mkdir("a/") tani nuk çon nĂ« njĂ« gabim.
  • NĂ« funksionet lfs_stat dhe lfs_getattr tani kthehet njĂ« gabim kur pĂ«rdoren slashet pĂ«rfundimtarĂ«, nĂ«se rruga ekzistuese nĂ« FS nuk Ă«shtĂ« njĂ« katalog.
  • PĂ«rpjekja pĂ«r tĂ« hapur njĂ« skedare me slashen pĂ«rfundimtar nĂ« emĂ«r tani do tĂ« çojĂ« nĂ« gabimin LFS_ERR_NOTDIR, nĂ«se skedari nuk Ă«shtĂ« njĂ« katalog nĂ« FS, LFS_ERR_ISDIR, nĂ«se emri i referohet njĂ« katalogu nĂ« FS, dhe LFS_O_CREAT, nĂ«se skedari nuk ekziston.
  • PĂ«rpjekja pĂ«r tĂ« hyrĂ« pĂ«rtej rrĂ«njĂ«s sĂ« FS, pĂ«r shembull, lfs_stat("/../a"), tani do tĂ« çojĂ« nĂ« njĂ« gabim.
  • ShĂ«nimi i njĂ« rruge bosh tani nuk Ă«shtĂ« sinonim pĂ«r tĂ« hyrĂ« nĂ« katalogun rrĂ«njĂ«sor, pra thirrja lfs_stat("") do tĂ« rezultojĂ« nĂ« njĂ« gabim.

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster