Na pewno każdy w swoim komputerowym życiu spotkał sytuację, w której przydałyby
mu się większe możliwości manipulowania swoimi plikami.
Niech dla przykładu będą to prawa dostępu w UNIXie. Czyż nie chciałoby się
czasem dać jakieś prawa dla kolegi, ale oczywiście nie od razu dla całej
grupy. Innym przykładem niech będzie plik /etc/passwd. Ilu administratorów
chciałoby
aby użytkownicy widzieli w nim tylko linię (jedną), która ich
interesuje. Po
co od razu muszą wiedzieć tyle o innych użytkownikach?
Czy nie byłoby
fajnie, gdybyśmy mogli pewne dane trzymać na dysku skompresowane,
ale tak, aby
zwykły systemowy read() zwracał
już
zdekompresowane dane (i odwrotnie oczywiście).
Takich możliwości w dzisiejszych implementacjach systemów plików brak. Aby coś takiego osiągnąć trzeba albo zmieniać funkcje systemowe, albo czasem wymaga to zmiany całego systemu plików.
Na poprzednim seminarium pokazałem dwa rózne pomysły na poprawienie tej sytuacji. Tym razem przedstawię moje własne rozwiazanie. Dzięki niemu zwykłe procesy z przestrzeni użytkownika mogą implementować wywołania systemowe zawarte w strukturze file_operations. Jeśli ktoś stwierdzi, że naklady czasowe na wynoszenie funkcji poza jądro systemu sa zbyt duże, moze swój kod załadować jako moduł. To podejście pozwala wreszcie uwolnić się od sztywnych reguł zakodowanych w systemie plików i zmusić pliki do działania po naszemu!
 
Wszystkich zainteresowanych serdecznie zapraszam.
Rafał Wijata