test robuste de d

Le
PIGUET Bruno
Bonjour,

Dans un programme en C, Je souhaite implanter un système de cache pour
une fonction qui doit retourner certaines informations contenues dans un
fichier :
La fonction garde en mémoire stat.st_dev, stat.st_ino et stat.st_mtime,
et toutes les informations du fichier.
Lorsqu'elle est appelée, elle construit le chemin du fichier à lire, et
fait un stat() sur ce chemin.
Si le triplet (stat.st_dev, stat.st_ino et stat.st_mtime) diffère de
celui gardé en mémoire, alors elle fait l'opération de lecture et garde
en mémoire (statique) les informations.
Ensuite, elle applique les critères (passé en argument) pour trouver
en mémoire les information demandée, et elle le retourne.

Le critère sur le triplet (stat.st_dev, stat.st_ino et stat.st_mtime)
vous semble-t'il robuste pour ce genre d'opération ? Si ces trois valeurs
n'ont pas changé, je n'ai pas besoin d'aller relire le fichier ?

Bruno.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #20628281
PIGUET Bruno wrote in message
Le critère sur le triplet (stat.st_dev, stat.st_ino et stat.st_mtime)
vous semble-t'il robuste pour ce genre d'opération ?



Ça dépend par rapport à quel genre de modifications. Par rapport à une
utilisation normale, probablement, pour peu que l'horloge système soit à
l'heure. S'il y a des considérations de sécurité, c'est plus risqué, en
particulier parce qu'un utilisateur peut fixer le mtime à sa guise.
Paul Gaborit
Le #20632081
À (at) 25 Nov 2009 10:56:55 GMT,
Nicolas George
PIGUET Bruno wrote in message
Le critère sur le triplet (stat.st_dev, stat.st_ino et stat.st_mtime)
vous semble-t'il robuste pour ce genre d'opération ?



Ça dépend par rapport à quel genre de modifications. Par rapport à une
utilisation normale, probablement, pour peu que l'horloge système soit à
l'heure. S'il y a des considérations de sécurité, c'est plus risqué, en
particulier parce qu'un utilisateur peut fixer le mtime à sa guise.



Sans aller chercher l'utilisateur malicieux, il y a aussi le problème
de certains couples client/serveur NFS qui gardent (gardaient?) en
cache trop longtemps ce genre d'information.

--
Paul Gaborit -
xavier
Le #20631021
Paul Gaborit
Sans aller chercher l'utilisateur malicieux, il y a aussi le problème
de certains couples client/serveur NFS qui gardent (gardaient?) en
cache trop longtemps ce genre d'information.



On peut contourner ceci en calculant un Hash MD5 du fichier. Mais ça
dépend des performances que l'OP attend. Si c'est plus long de calculer
une somme de contrôle que de relire le fichier, on n'y gagne pas
vraiment...

--
XAv
Disponible au 01/06/2010
JKB
Le #20632311
Le 25-11-2009, ? propos de
Re: test robuste de détection de non-changemeùnt de fichier ?,
Xavier ?crivait dans fr.comp.os.unix :
Paul Gaborit
Sans aller chercher l'utilisateur malicieux, il y a aussi le problème
de certains couples client/serveur NFS qui gardent (gardaient?) en
cache trop longtemps ce genre d'information.



On peut contourner ceci en calculant un Hash MD5 du fichier. Mais ça
dépend des performances que l'OP attend. Si c'est plus long de calculer
une somme de contrôle que de relire le fichier, on n'y gagne pas
vraiment...



Et comment je calcule la somme de contrôle _sans_ relire le fichier ?

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
xavier
Le #20631821
JKB
Et comment je calcule la somme de contrôle _sans_ relire le fichier ?



Je me disais bien qu'il y avait un défaut :-)

Néanmoins, je crois que c'est un truc qui se trouve dans les métadonnées
ZFS si tu l'utilises.

--
XAv
Disponible au 01/06/2010
JKB
Le #20633621
Le 25-11-2009, ? propos de
Re: test robuste de détection de non-changemeùnt de fichier ?,
Xavier ?crivait dans fr.comp.os.unix :
JKB
Et comment je calcule la somme de contrôle _sans_ relire le fichier ?



Je me disais bien qu'il y avait un défaut :-)

Néanmoins, je crois que c'est un truc qui se trouve dans les métadonnées
ZFS si tu l'utilises.



Donc c'est portable ;-)

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Publicité
Poster une réponse
Anonyme