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

Reply via email to