(Illustration by Gaich Muramatsu)
On Sun, Jul 03, 2005 at 05:16:05PM -0400, Jan Harkes wrote: > On Fri, Jul 01, 2005 at 11:44:58AM -0600, Patrick Walsh wrote: > > I left for a week on vacation and left tests running on our servers > > only to come back and find a series of problems and probably coda bugs. > > I think most of these should be reproducible. I'll do my best to make > > them easy to track down. > > > > 1) cfs getpath fid_at_realm > > > > This command works fine on consistent objects, but not at all on > > inconsistent objects. So when you get a log entry that looks like > > this: > ... > > VIOC_GETPATH: No such file or directory > > Yeah, getpath doesn't set the 'GetInconsistent' flag when it calls > fsdb::Get. I guess that could be considered a bug, but it shouldn't be > hard to fix (depending on how many other places are using GetPath). Actually, this turns out to be impossible to fix. The problem is that the servers don't agree about the object's data or metadata. That is the whole point of being 'inconsistent'. Now a little bit of this metadata is the parent identifier, which we need in GetPath to find the parent directory. As a result, the inconsistent dangling link that we see is really a temporarily faked stat and readlink result, but it doesn't actualy have a valid filesystem object associated with it. So the current way directories are linked to their parents in getattr means that we can not use getpath. If we set up the directory linkage on the forward path (during lookup) it would be possible to get the path for inconsistent objects as long as we found them as a result of a lookup. But that is a pretty significant change. JanReceived on 2005-07-04 01:02:12