Question

J'ai essayé de demander sur la liste de diffusion de FUSE, mais je ne l'ai pas reçu de réponse à ce jour ... J'ai deux ou trois questions. Je vais mettre en place un système de fichiers FUSE bas niveau et veiller sur le descripteur de fuse_chan avec epoll.

  1. Je dois inodes faux pour tous objets dans mon droit de système de fichiers? Sont t-il des règles sur le choix inodes pour les objets de VFS (par exemple I do doivent utiliser uniquement des valeurs positives ou puis-je utiliser des valeurs dans une plage)?

  2. Puis-je faire descripteur de fuse_chan non bloquante? Si oui, s'il vous plaît dites-moi si je peux supposer que fuse_chan_recv() / fuse_chan_send() recevra / envoyer une demande toute la structure, ou dois-je les remplacer avec des fonctions de manutention envoi partiel et recevoir?

  3. Qu'en est-il buffer size? je vois ça dans fuse_loop() un nouveau tampon est alloué pour chaque appel, donc je suppose que la taille de la mémoire tampon est pas fixé. Cependant peut-être il y a un maximum de possible la taille de la mémoire tampon? Je peux alors allouer un tampon plus large et réduire les opérations d'allocation de mémoire.

Était-ce utile?

La solution

(1) Inodes sont définis comme des entiers non signés, donc en théorie, vous pouvez utiliser toutes les valeurs. Toutefois, étant donné qu'il pourrait y avoir des programmes qui ne font pas attention, je jouerais la sécurité et utiliser uniquement les non-zéro, des nombres entiers positifs jusqu'à INT_MAX.

(2) Fusible utilise un dispositif de noyau de spécial. Alors que fuse_chan_recv () ne prend pas en charge partielle lit, cela peut ne pas être nécessaire, car le noyau ne doit pas renvoyer les paquets partiels de toute façon.

(3) dans les noms de fichier Linux sont max 4096 caractères. Cela met une limite sur la taille de la mémoire tampon:

$ grep PATH_MAX /usr/include/linux/limits.h
#define PATH_MAX        4096    /* # chars in a path name including nul */
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top