On Thu, Nov 24, 2011 at 11:39:33AM +0100, Emmanuel Dreyfus wrote: > When perfused sends a lookup down to a FUSE filesystem, it may discover > that the parent node does not exist anymore. That happens on distributed > filesystems when another client deleted the directory. > > Obviously perfused needs to tell the kernel of the situation, so that > the parent vnode can be recycled and looked up again. I do not find the > way to do that reading kernel PUFFS code. Did I miss something, or is it > a missing feature?
When calling lookup, the parent (directory) is supposed to be locked to prevent exactly this sort of thing from happening. You and/or perfuse and/or puffs ignore this at your peril, because doing so violates atomicitiy guarantees and assumptions made by upper-level code. However, if it's really disappeared, why not just fail with ENOENT? Or if you want the whole thing to be restarted from the beginning, ERESTARTSYS. -- David A. Holland dholl...@netbsd.org