1

Si j'ai besoin de stocker des données spécifiques à un inode, est-ce que je peux utiliser ce champ? Le contexte est un module Linux que j'écris qui doit contenir une certaine structure par inode (où chaque périphérique de ce module a un inode).Champ in i_private pour stocker des données privées

Je sais que dans les descripteurs de fichiers, je peux stocker des données dans le champ private_data. Est-ce que i_private est le champ "correspondant" pour l'inode?

Répondre

1

Ce champ est utilisé par les pilotes fs. Extrait de ext4.h:

static inline ext4_io_end_t *ext4_inode_aio(struct inode *inode) 
{ 
    return inode->i_private; 
} 

static inline void ext4_inode_aio_set(struct inode *inode, ext4_io_end_t *io) 
{ 
    inode->i_private = io; 
} 

Donc, si vous écrivez votre propre système de fichiers alors il est tout à fait correct. Mais si vous utilisez des inodes à partir d'un système de fichiers existant, vous ne devriez pas le faire parce que vous allez corrompre les inodes.

+0

Y a-t-il un champ, comme private_data dans la structure descripteur de fichier, que je peux utiliser pour stocker mes propres données sans corrompre l'inode? – Binary

+0

Que faites-vous avec les inodes? –

+0

Je crée un module de périphérique de caractères nommé 'abc'. Et j'ai besoin de stocker une structure pour chaque périphérique ('abc0', 'abc1', ...), donc chaque utilisateur qui appellera open() par exemple sur un périphérique spécifique aura la structure correspondante de l'appareil. c.-à-d. Si deux processus appellent open (abc0, ..) ils pourraient accéder à la même structure. – Binary

Questions connexes