On Wed, 2006-10-11 at 12:23 -0400, Daniel Barkalow wrote: > On Tue, 10 Oct 2006, Anthony E. Caudel wrote: > > > I have been using Gentoo for more than 2 years now and have always > > wondered (but never asked - That's the "dumb" part) how Gentoo manages > > to update a package that happens to be running at the time. > > > > Given that the old version (the one running) is deleted, how does it > > manage to keep standing if you just cut its legs off? > > Userspace technically never "deletes" anything in the UNIX model; it > either "truncates" it (not what's going on here) or it "unlinks" it. > "Unlink" causes the file not to have the filename any more, and the kernel > gets rid of files which aren't in use and have no name (of course, nobody > can tell when or if this happens, aside from the disk not filling up, > because there would be no way to look at the file anyway). > > If you look at /proc/<PID>/maps for a program you've upgraded, you'll > probably find funny notations in there, indicating that the file it's > using is not the file that currently has that filename. > > ("truncate" and otherwise openning the file for writing actually affect > the file, not the filename, and would therefore cause programs to crash if > you overwrote them.) > > Technical terms: the file itself is called an "inode", and the name is a > "dentry" (actually, the last part of the path, which is all that goes away > in a single operation, is the dentry). A dentry stores the inode number of > the inode at that path, and "unlink" removes the dentry. What's actually > happening in an upgrade is "rename", which, as a single operation, unlinks > any dentry with the destination path, links the source inode to the > destination dentry, and unlinks the source dentry. This means that no > program can see the path empty or with half of a file or see the file with > two names. > > -Daniel > *This .sig left intentionally blank*
Wow, files can exist without file names. I think I found a topic for discussion in philosophy class... -- gentoo-user@gentoo.org mailing list