Newsgroup: it.comp.os.linux.development
Titolo: impazzire per delle str***ate

pongo una questione:
stavo facendo un programmino c, dove ad un certo punto devo montare una
penna usb.
in fase di debug mi sono accorto che dopo aver montato la penna (tramite
la mount del c, non system o exec), se da shell davo "mount" questa non
risultava montata e che per capirlo ho dovuto guardare in /proc/mounts.
Mi sono documentato un attimo per capire che "mount" guarda in mtab, ed
in mtab ci vanno solo i device montati col mount di bash. 
ma che cagata č?
c'č un motivo per questo bizzarro comportamento?

Un bel giorno RedWiz digitň:

Non capisco il problema, a mount(2) devi passare tutti e soli i parametri
che servono al kernel per eseguire il mount, non ti serve pescare da nessun
file. Se invece tu vuoi "simulare" il funzionamento di mount(8), allora č
chiaro che devi pescare dal file in cui pesca lui, ma non vedo cosa ci sia
di bizzarro in questo.
-- 
emboliaschizoide.splinder.com

 c'è un motivo per questo bizzarro comportamento?
L'unica cosa bizzarra è non leggere i manuali.
http://www.gnu.org/software/libc/manual/html_node/Mount_002dUnmount_002dRemount.html
| ...
| These functions do not access the fstab and mtab files.
| You should maintain and use these separately. See Mount
| Information.  
| ....

 
http://www.gnu.org/software/libc/manual/html_node/Mount_002dUnmount_002dRemount.html
divertente vederti fare il saccente anche quando non hai capito un cazzo

 di bizzarro in questo.
non hai capito
il fatto è che io mi ritrovo con un device montato, e mi aspetto di
saperlo dando mount (da shell) senza argomenti. Il fatto è che se questo
device è stato montato con il c, io non riesco a vederlo.

 capito un cazzo
Senza arrabbiarsi, dopo aver letto anche l'altra 
tua risposta, mi pare che tu continui a non leggere 
i manuali, cominciando da man mount, dove si parla 
dell'opzione -n e dove si fanno riferimenti a /proc/mtab.
Per di più  non hai letto il link che ti ho mandato
e le pagine a cui fa riferimento.
In poche parole:
mount (il comando shell) non sempre aggiorna mtab 
mount (delle librerie C) non aggiorna mtab (il perche`
ora ti dovrebbe essere ovvio).
mtab e` inaffidabile
Linux mette a disposizione /proc/mtab che e` affidabile.

 Linux mette a disposizione /proc/mtab...
Che in effetti si chiama /proc/mounts
Mi scuso per l'errore

 ora ti dovrebbe essere ovvio).
mi era chiaro (non ovvio) anche quando ho posto la domanda 
(cit.)"ho dovuto guardare in /proc/mounts.
Mi sono documentato un attimo per capire che "mount" guarda in mtab, ed
in mtab ci vanno solo i device montati col mount di bash"
la ma domanda era :
perchč diavolo c'č questa incongruenza tra i mount?
non potrebbero tutti fare riferimento allo stesso file (proc/mounts
appunto) per non fare casino?
inoltre,da tutto questo si evince che il man di mount č sbagliato:
 
mount [-l] [-t type]
lists all mounted file systems (of type type).  
The option -l adds the (ext2, ext3 and XFS) labels in this listing.  See
below.
col cavolo che "lists all mounted file systems" !!!
te capě?

 col cavolo che "lists all mounted file systems" !!!
Dove e` l'errore?
Che le informazioni possono non essere aggiornate?
Viene detto piu` avanti.

 Dove e` l'errore?
l'errore č che dovrebbe esserci scritto:
 "lists all mounted file systems only if /etc/mtab and /proc/mounts are
 the same file, otherwise lists all mounted filesystems mounted by mount(8).
If you wanna really see all mounted file sistems, read /proc/mounts"
ecco, cosě mi piace di piů.

 appunto) per non fare casino?
Semplice: mtab in linux è obsoleto. 
Mount è un programma non presente solo in Linux, ma in diversi unixlike. In
tutte le sue implementazioni viene utilizzato sto benedetto file mtab, il
quale rispetto a /proc/mounts è dichiaratamente potenzialmente impreciso.
Prova a vedere la diversità delle opzioni di mount presenti tra i due files.
Noterai che il quello contenuto in proc sono presenti delle opzioni di
default inserite dal kernel.
Quando usi la funzione di mount delle libc, non stai utilizzando il comando
mount, ma stai chiamando la syscall per fare il mount di un device. Alla
syscall di linux non interessa minimamente il file mtab. In questa ipotesi
puoi ben capire che volendo puoi avere un sistema senza questo storico
comando.
Se vuoi mantenere la coerenza con l'mtab, devi
aggiungere/eliminare/aggiornare la voce relativa al tuo device. Purtroppo
le patch per accedere direttamente a /proc/mounts sono state sempre
rifiutate per una questione di retrocompatibilità.
Per quanto riguarda la man di mount: dubito che negli ultimi anni sia stata
aggiornata
-- 
| /
| \Byte - Andrea Briganti - kbyte(aaattt)
despammed.com
CSLug member: 
http://cslug.linux.it
 - JID: 
kb...@jabber.linux.it
***Un giorno forse gli uomini saranno in grado di comprendersi

 aggiornata
questa è la rispsta che cercavo.
grazie


se usi la syscall devi anche aggiornare /etc/mtab
lascia stare la syscall e con una system lancia mount

 *BDS stiano prendendo spunto da /sys e /proc).
BSD forse. Solaris non credo, visto che /proc proviene proprio da uno
dei sistemi di Sun
Enrico

 proprio da uno dei sistemi di Sun
Grazie per la precisazione.
procfs e` una idea vecchia risalente alla ottava 
edizione di UNIX a meta` degli anni ottanta, portata 
in SVR4 nei novanta e sviluppata in Plan 9; Solaris e 
4.4BSD si limitarono a copiare da Plan 9.
Le estensioni introdotte da Linux in /proc riguardano
le informazioni sul sistema (/proc/mounts /proc/meminfo
/proc/modules ...), la possibilita` di modificare
parametri del sistema, il vantaggio di spostare molte
funzionalita` in user space.
sysfs e` una idea originale di Linux ed e` abbastanza 
nuova; in effetti estende le innovazioni di Linux su
procfs, razionalizza /proc spostando molti file da 
/proc a /sys e supera alcuni limiti di /procfs.

 appunto) per non fare casino?
Credo che ci siano di mezzo ragioni storiche. Il file mtab si trova un 
po' in tutti gli Unix in circolazione, mentre le frattaglie sotto /proc 
sono specifiche del kernel Linux. Credo che ci sia anche una proposta di 
standard per il filesystem, sicuramente seguita da distribuzioni come 
Debian, che prescrivono di riservare la gerarchia /etc per i file di 
configurazione, con la quale trovo che vada poco d'accordo un file che 
viene modificato a runtime dal kernel. Ma tant'č... mtab č lě dalla 
notte dei tempi.
Capisco il tuo disappunto, se vuoi che mtab visualizzi il tuo mount, ti 
tocca provvedere ad aggiornarlo quando fai il mount.

 tocca provvedere ad aggiornarlo quando fai il mount.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >