|
From: | Aaron Bentley |
Subject: | Re: [Gnu-arch-users] Re: tla on nfs only |
Date: | Sun, 14 Mar 2004 23:37:13 -0500 |
User-agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6b) Gecko/20031221 Thunderbird/0.4 |
Stefan Monnier wrote:
Obviously we do not need to check for corruption of file FOO if FOO will not be read in the course of the current operation.Yes. Unfortunately, we don't know which files in the working directory have changed until we look at the revision library. In that case, we need ALL the files in the revlib to be uncorrupted.So you mean that tla does a diff of every single file? If not how does it avoid it? AFAIK it avoids it by using {arch}/,,inode-sigs in the work-tree (not in the revision library) in order to get a conservative approximation of what might have changed, at which point it will only do a diff on those files, so it only needs to check the inode-sig (in the revlib) of those files who failed the inode-sig-check in the work-tree. What am I missing?
For each file,The first check tla does is stats against the revision library. This is the cheapest check it can do. If the files are hardlinks of each other, the working copy hasn't changed. If their sizes differ, the working copy has changed.
If tla still don't know, it checks the file against its inode signature.If the file doesn't match its inode signature, tla does a whole-file binary comparison.
By this point, tla knows whether the file has changed, and invokes diff if appropriate.
Even if the stats step is skipped, you were advocating removing inode signatures from the working directory, and that will force tla to do a whole-binary comparison of every file against the revlib.
If md5 signatures were implemented, you'd be doing whole-file comparisons against the md5 signatures instead.
Aaron
[Prev in Thread] | Current Thread | [Next in Thread] |