On 2015-01-30 00:30:29 +0100, Francois Lafont wrote: > Le 29/01/2015 22:12, Pascal Hambourg a écrit : > > Il y a de ça. Chaque ouverture d'un fichier compte pour un lien vers > > l'inode correspondant, au même titre que les liens durs dans les > > répertoires. La mise à jour fait pointer le nom du fichier vers un > > nouvel inode > > Tu parles bien de la mis à jour d'une lib ? > Dans ce cas, je ne comprends pas trop ce que tu veux dire par "nouvel inode". > Par exemple, j'ai ça : > > ~$ touch /tmp/foo.so > ~$ touch /tmp/foo.so.new-version > > ~$ ls -i /tmp/foo.so* > 523294 /tmp/foo.so 523295 /tmp/foo.so.new-version > > # Je considère la commande ci-dessous comme une màj du fichier foo.so > ~$ cp /tmp/foo.so.new-version /tmp/foo.so > > # Et je constate que le numéro d'inode de foo.so n'a pas bougé ? > ~$ ls -i /tmp/foo.so* > 523294 /tmp/foo.so 523295 /tmp/foo.so.new-version
Mais une mise à jour ne fait pas un cp. Un "cp" va modifier un fichier si la destination existe, pas créer un nouveau fichier. > Du coup, j'ai pas dû comprendre quelque chose dans ta phrase. > > > qui contient la nouvelle version du fichier, mais l'inode > > originel reste présent > > Présent où ça ? Dans les « attributs » des processus en cours ? Présent sur le disque (et référencé par les processus). > > tant qu'il reste des liens, donc tant qu'il n'est > > pas fermé par les processus qui l'ont ouvert. > > Mais durant cette période transitoire où il reste encore des > processus qui ont ouvert un fichier situé sur une zone A du > disque, zone pointée par cet « ancien » inode, qu'en est-il > de cette zone A du disque ? Est-elle disponible ou non ? Non, elle n'est toujours pas disponible. Le fichier existe toujours. Cf la page man unlink(2): unlink() deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open, the file is deleted and the space it was using is made available for reuse. If the name was the last link to a file but any processes still have the file open, the file will remain in existence until the last file descriptor referring to it is closed. If the name referred to a symbolic link, the link is removed. > Si je comprends bien d'un côté cette zone n'est plus accessible via > l'arborescence du filesystem car l'ancien inode n'existe plus. Du > coup, cette zone du disque serait libre en quelques sortes ? Non, l'ancien inode existe toujours (je suppose qu'un processus qui a le fichier ouvert peut toujours faire un fstat sur le descripteur de fichier pour obtenir le numéro d'inode). -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon) -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: https://lists.debian.org/20150130004547.gb14...@xvii.vinc17.org