On Fri Apr 10 2009 at 22:36:38 +0000, Andrew Doran wrote:
> On Sat, Apr 11, 2009 at 01:32:09AM +0300, Antti Kantee wrote:
> 
> > On Fri Apr 10 2009 at 21:34:10 +0000, Andrew Doran wrote:
> > > On Fri, Apr 10, 2009 at 06:57:45PM +0200, Frank Kardel wrote:
> > > 
> > > > It may be related: I am now seeing a tmpfs uvm_fault():
> > > > 
> > > > hand copied bt:
> > > > uvm_fault()
> > > > tmpfs_do_detach()
> > > > tmpfs_remove()
> > > > VOP_REMOVE()
> > > > do_sys_unlink()
> > > > syscall()
> > > 
> > > It may be this: http://gnats.netbsd.org/41183
> > 
> > Might be.  I filed a PR for that ages ago and had forgotten all about
> > it by now.  See kern/38188.
> 
> On the face of it what do you think of:
> 
> - preserve pnbuf across entirety of operations that use it
> - retire SAVENAME, VOP_ABORTOP()
> - encapsulate operations with namei_init(), fini() or whatnot.

I thought the general agreement was to move to deferring final lookup
until the actual operation.

I don't see the difference between namei_fini() and ABORTOP, although
maybe the first is more explicit and less confusing for people not
familiar with vfs.

> - copy pathname to persistent storage where required (NFS?)

Or make pnbuf an object with a reference counter?  But is that optimizing
for the worst case?

The two questions I'm always too tired to answer to myself are:
1) how does this work with nfs(d)
2) how does this work with layered file systems
   (ok, i peeked at unionfs.  unionfs has a creative abortop...  *punt*)

Reply via email to