2011-01-25 9 views
7

Próbowałem zapytać na liście mailingowej FUSE, ale do tej pory nie otrzymałem żadnej odpowiedzi ... Mam kilka pytań. Mam zamiar wdrożyć system plików FUSE niskiego poziomu i oglądać nad deskryptorem fuse_chan z epoll.Wdrażanie asynchronicznego systemu plików za pomocą FUSE na Linuksie

  1. muszę fałszywych węzłów dla wszystkich obiektów w mojej prawej stronie systemu plików? Czy są jakieś zasady dotyczące wyboru iod dla obiektów w VFS (np. Czy muszę używać tylko wartości dodatnich lub czy mogę użyć wartości w pewnym zakresie)?

  2. Czy mogę odblokować deskryptor fuse_chan ? Jeśli tak, to proszę mi powiedzieć, czy mogę Zakładamy, że fuse_chan_recv()/fuse_chan_send() otrzyma/wysłać zapytanie całą strukturę, albo muszę zastąpić im z funkcjami obsługi częściową wysyłania i odbierania ?

  3. Co z numerem buffer size? Widzę, że nowy bufor jest przydzielony dla każdego połączenia, więc zakładam, że rozmiar bufora nie jest ustalony. Jednak może jest jakiś maksymalny możliwy rozmiar bufora ? Mogę wtedy przydzielić większy bufor i zmniejszyć operacje przydzielania pamięci .

+0

Niegodziwy. 666 ... Nie używaj FUSE, zaimplementuj odpowiedni sterownik systemu plików w jądrze Linux. BEZPIECZNIK jest do dupy. –

Odpowiedz

2

(1) I węzły są zdefiniowane jako liczby całkowite bez znaku, więc teoretycznie można użyć dowolnych wartości. Jednakże, ponieważ mogą istnieć programy, które nie są ostrożne, zagrałbym to bezpiecznie i używałbym niezerowych dodatnich liczb całkowitych do INT_MAX.

(2) Bezpiecznik używa specjalnego urządzenia jądra. Chociaż funkcja fuse_chan_recv() nie obsługuje częściowych odczytów, może nie być wymagana, ponieważ jądro nie powinno zwracać częściowych pakietów.

(3) Nazwy plików w systemie Linux mają maksymalnie 4096 znaków. To nakłada ograniczenie na rozmiar bufora:

$ grep PATH_MAX /usr/include/linux/limits.h 
#define PATH_MAX  4096 /* # chars in a path name including nul */ 
Powiązane problemy