-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erj
e.net!feeder.erje.net!news.uzoreto.com!eternal-september.org!reader02.eternal-s
eptember.org!.POSTED!not-for-mail
From: heby <h...@p...onet.pl>
Newsgroups: pl.comp.programming
Subject: Przenośny, uproszczony filesystem
Date: Thu, 14 Jan 2021 13:31:15 +0100
Organization: A noiseless patient Spider
Lines: 80
Message-ID: <rtpdik$cge$1@dont-email.me>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 14 Jan 2021 12:31:16 -0000 (UTC)
Injection-Info: reader02.eternal-september.org;
posting-host="a0754113d6a558cd37a6112f9a477e51";
logging-data="12814";
mail-complaints-to="a...@e...org";
posting-account="U2FsdGVkX1+0OEY1hnKVsvxS0CMxOJUt"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101
Thunderbird/78.6.1
Cancel-Lock: sha1:id5NQdi6NXt5ga8FIT+tvpG7K9E=
Content-Language: en-US
X-Mozilla-News-Host: news://news.eternal-september.org:119
Xref: news-archive.icm.edu.pl pl.comp.programming:215333
[ ukryj nagłówki ]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.
Następne wpisy z tego wątku
- 05.02.21 19:42 M.M.
- 07.02.21 12:55 heby
- 07.02.21 15:34 M.M.
- 07.02.21 19:04 heby
- 07.02.21 19:35 M.M.
- 07.02.21 20:03 M.M.
- 07.02.21 20:57 heby
- 07.02.21 21:19 M.M.
- 07.02.21 22:01 heby
- 07.02.21 22:53 M.M.
- 08.02.21 07:39 heby
- 08.02.21 11:08 M.M.
- 08.02.21 12:12 heby
- 08.02.21 14:24 M.M.
- 08.02.21 14:57 heby
Najnowsze wątki z tej grupy
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
- Ideologia Polskiego Programisty wer.3
- Ada-Europe Conference - 6 March Extended Final Deadline
- Szybkie pytanko do fachowców od Bourne shella
Najnowsze wątki
- 2024-03-28 Amnesty International o izraelskim apartheidzie wobec Palestynczyków
- 2024-03-28 Warszawa => Senior Rust Software Engineer <=
- 2024-03-28 Przegląd po terminie
- 2024-03-28 Wrocław => Handlowiec w branży IT <=
- 2024-03-28 Warszawa => International freight forwarder <=
- 2024-03-28 Warszawa => Technical Tribe Leader (Java Background) <=
- 2024-03-28 Eltec nie zyje?
- 2024-03-28 Katowice => Application Engineer for Service and Deployments <=
- 2024-03-28 Wrocław => Mid PHP Developer (Laravel) <=
- 2024-03-28 Vectra 'Plan domowy bez limitu'
- 2024-03-28 Szczecin => Starszy inżynier oprogramowania (Rust) <=
- 2024-03-28 Zielona Góra => Spedytor międzynarodowy <=
- 2024-03-28 Wnuczek z Wehrmachtu idzie na rympal.
- 2024-03-28 Bażanowice => Inżynier Industrializacji - Elektronik <=
- 2024-03-28 Warszawa => Senior Account Manager <=