🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #217336

Re: Przenośny, uproszczony filesystem

#217336
From: M.M.
Date: Fri, 05 Feb 2021 18:42
87 lines
4507 bytes
On Thursday, January 14, 2021 at 1:31:18 PM UTC+1, heby wrote:
> Cześć. 
> 
> Poszukuje inspiracji a być może gotowca. Ale to trudno powiedzieć. A 
> chodzi o coś takiego: 
> 
> Implementacja abstrkacyjnego filesystemu pracującego na urzeniau 
> blokowym, do którego dostęp zapewniam ja, przez stosowane abstrkacje. 
> Wykorzystać było by fajnie, ale najważniejsze to możliwośc podejrzenia 
> rozwiązań. 
> 
> Wiec to tak powinno wyglądać: 
> 
> struct IFooFileSystem 
> { 
> std::shared_ptr< IFile > openFile( std::string cosnt& _fileName, Flags 
> _flags ); 
> 
> bool fileExist( std::string const& _fileName ); 
> 
> [...] 
> }; 
> 
> struct IBlockDevice 
> { 
> std::shared_ptr< Block > readBlock( BlockIndes _index ); 
> 
> void writeBlock( BlockIndes _index, Block& _block ); 
> }; 
> 
> struct IFile 
> { 
> void read(...); 
> void seek(...); 
> [...] 
> } 
> 
> std::shared_ptr< IFooFileSystem > 
> createFileSystem( myBlockDevice ); 
> 
> Coś w ten deseń, czyli to ja dostaczam abstrakcje robiącą I/O na 
> poziomie block/cluster a kod realizuje wysokopoziomowe operacje plikowe. 
> 
> To nie musi być z czymkolwiek kompatybilne, nawet lepiej gdyby nie było. 
> Musi być natomist komplenie nie zależne od czegokolwiek, czy to systemu 
> czy zewnatrznych biblitek. I thread safe, będę jednoczesnie czytał i 
> zapisywał wiele "plików" z róznych wątków. W zasadzie poza "plikami" 
> reszta kompletnie zbędna, nie interesują mnie atrybuty czy nawet 
> katalogi. Mocno uproszczony filesystem, coś w rodzaju wielu niezależnych 
> strumieni w jednym kontenerze. 
> 
> Mogę to napisać samodzielnie, ale zanim to zrobie: ktoś widział taki 
> projekt lub część jakiegoś projektu? 
> 
> Dla zastanawiajacych się po co mi to: 
> 
> Jest *prawdziwy* plik. W moim kodzie jest konwertowany do urządzenia 
> blokowego i wystawiany do tego mechanizmu fiesystemu. 
> 
> Dzięki temu mogę w jednym pliku trzymac w środku wiele plików, 
> bezustannie je czytajac i zmieniając. Ułatwi mi to pracę, ponieważ pliki 
> te są trzymane razem, user nie może nic w nich popsuć, nie muszę 
> bezustannie pakować/rozpakować jak robi np. OpenOffice (u nich 
> kontenerem jest packer). Od razu gotowe do pracy. 
> 
> Katalog odpada: user może w nim coś popsuć. 
> 
> Ewentualne puchnięcie moża jakoś obejśc pisząc garbage collector 
> trimujący ten "wirtualny filesystem" i przenoszący bloki w tle. 
> 
> Coś podobnego robi np. VirtualBox ale nie chodzi o taki poziom emulacji 
> dysków, to ma byc mała pierdoła do kodu który mam pod kontrolą. 
> 
> Innymi słowy: czy ktoś widział tego typu wirtualny filesystem? 
> Interesują mnie zagadnienia takie jak uproszczony wielodostęp czy 
> realizacja kroniki. Chciałbym je poderzeć, ponieważ nie mam w tym 
> doswiadczenia, pewnie napiszę to mało optymalnie. 
> 
> Projekt Fuse nie nadaje się bez bardzo poważnego wrapowania. Ponadto ja 
> nie potrzebuje wielu filesystemów, potrzebuje tylko jeden, o mało ważnej 
> kompatybilności ze światem zewnętrznym. Taki FooFS.

Jakby to miało być wydajnościowo optymalne, to by wymagało  dużego nakładu pracy, 
wielu prób, tunignu, testów, debugowania... W jakim sensie to by miało być optymalne?


Pozdrawiam
Technical Details
Message-ID: <cff484ae-3bf8-4cec-bbb7-78e44cb70167n@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin2!goblin1!goblin.stu.neva.ru!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
References: <rtpdik$cge$1@dont-email.me>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:622a:42:: with SMTP id y2mr5435306qtw.186.1612550562330;        Fri, 05 Feb 2021 10:42:42 -0800 (PST)
X-Received: by 2002:a05:620a:ec9:: with SMTP id x9mr5628928qkm.333.1612550562081; Fri, 05 Feb 2021 10:42:42 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin2!goblin1!goblin.stu.neva.ru!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Fri, 5 Feb 2021 10:42:41 -0800 (PST)
In-Reply-To: <rtpdik$cge$1@dont-email.me>
Complaints-To: groups-abuse@google.com
Injection-Info: google-groups.googlegroups.com; posting-host=77.254.35.244; posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 77.254.35.244
References: <rtpdik$cge$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <cff484ae-3bf8-4cec-bbb7-78e44cb70167n@googlegroups.com>
Subject: Re: Przenośny, uproszczony filesystem
From: "M.M." <mmarszik@gmail.com>
Injection-Date: Fri, 05 Feb 2021 18:42:42 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit