Newsgroup: it.comp.os.linux.development
Titolo: Accedere ad un Inode

Ciao a tutti,
è la prima volta che scrivo nel gruppo quindi un saluto a tutti!
Sto facendo delle modifiche alla EXT2 e ho usato il campo 
ext2_inode_info.not_used_1 (del vnode) che viene sincronizzato con il 
campo ext2_inode.osd1.masix1.m_i_reserverd1 (dell'inode di EXT2) per 
puntare ad un blocco dati allocato appositamente per scrivere delle 
informazioni.
Vorrei a questo punto accedere con un programma a livello utente a 
questo campo per leggere tali informazioni ... ma come si fa?
Devo linkare qualche libreria?
Aiuto mi sono perso aiutatemi!! :)
lollo

Mi rispondo da solo ... mi sa che devo usare /proc giusto?
lollo
Monkey ha scritto:


 Mi rispondo da solo ... mi sa che devo usare /proc giusto?
Temo che /proc non c'entra nulla con le strutture del file system.
Per leggere ad un i-node devi accedere alle strutture interne del file 
system.  Tutte informazioni che sono un genere gestite dal kernel e 
che se non conosci più che bene come fare ad accedervi fai solo dei 
casini.  Tieni anche presente che il kernel mantiene in memoria una 
copia (cache) e che un programma a livello utente non può avere le 
informazioni aggiornate.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 aggiornate.
Proprio perche' sono gestite dal kernel l'unica maniera per fare delle 
richieste e leggere dei dati mi pare sia comunicare attraverso proc.
Le modifiche le sto facendo su una EXT2 parallela che ho chiamato EXT5 
compilata come modulo quindi basta che apro un file r/w in /proc e 
comunico tramite quello no?
Lo sto programmando proprio ora e funziona, d'altra parte senno' come 
faccio a comunicare?
Le strutture del kernel a cui fai riferimento le conosco abbastanza bene 
proprio perche' ci sto lavorando da un po' spero' di non stare dicendo 
eresie.
lollo
 > Ciao
 > Giovanni
grazie!!!

 faccio a comunicare?
Bah, non conosco abbastanza il f.s. /proc e non saprei come recuperare 
quelle informazioni.


 quelle informazioni.
infatti non ci sono pero' e' un canale di comunicazione tra user space e 
kernel space.
quando fai cat /proc/nomefile interagisci in realta' con un modulo che 
gira a livello kernel.
sto scoprendo un sacco di cose!!
grazie ancora
lorenzo

 Devo linkare qualche libreria?
Il problema e' che le applicazioni utente non hanno visibilita' dei
dettagli di basso livello del filesystem; in teoria puoi usare
libext2fs, ma non puoi farlo sul filesystem montato (c'e' una race
condition con il kernel, non esiste garanzia di stabilita' delle
informazioni che leggi in questo modo a fs montato).
Luca
-- 
Windows /win'dohz/ n. : thirty-two  bit extension and graphical shell to
a sixteen  bit patch to an  eight bit operating system  originally coded
for a  four bit microprocessor  which was  written by a  two-bit company
that can't stand a bit of competition.

 informazioni che leggi in questo modo a fs montato).
ok c'ero arrivato .. piano piano :)
quindi mi consigli di usare un file su proc per scambiare dati?
grazie
lorenzo



Si ma è solo perche' tutti gli altri componenti del kernel hanno delle 
interfacce che pubblicano le informazioni.  Se vuoi accedere ai 
dettagli del file system devi IMO modificare pesantemente il modulo 
perché renda disponibile ciò che ti serve.


 quindi mi consigli di usare un file su proc per scambiare dati?
E' veramente orribile come soluzione (e /proc non fatta per quello).
Meglio una syscall che accetta un fd o un path.
Luca
-- 
Let me make your mind, leave yourself behind
Be not afraid

 Meglio una syscall che accetta un fd o un path.
Dici? E poi che ci faccio? Io devo accedere ad un campo di un inode di 
EXT2 dove c'e' un puntatore ad una blocco dati di EXT2 ... che ci faccio 
con un fd? Dovrei andare a modificiare la syscall.
Non mi sembra una soluzione cosi' orrenda.
lorenzo



Queste interazioni con i servizi si fanno con le 'ioctl'.


> Queste interazioni con i servizi si fanno con le 'ioctl'.
wow .... mi si apre un mondo!
ora mi documento un po'.
grazie mille!
lorenzo

 con un fd? Dovrei andare a modificiare la syscall.
Luca
-- 
"L'ottimista pensa che questo sia il migliore dei mondi possibili. 
 Il pessimista sa che e` vero" -- J. Robert Oppenheimer