Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Nov 2002 05:11:50 -0500
From:      "David E. Cross" <crossd@cs.rpi.edu>
To:        fs@freebsd.org
Subject:   AFS nastiest hack ever question
Message-ID:  <200211291011.gATABpU07028@monica.cs.rpi.edu>

next in thread | raw e-mail | index | archive | help
Just when I thought I was done ;)

Ok.. Quick summary.  "afs_symlink" will panic the kernel.  The problem 
is that the symlink syscall expects VOP_SYSCALL to fill in the "vpp" with
the vnode of the newly created symlink.  AFS doesn't do this, ever, 
it, internally creates its private vnode, and then calls its own "vput"
on it, immediately claiming it back to the system (which is good in some
ways since afs vnodes don't play nice with system vnodes).  To "fix" this
I would need to significantly modify AFS's code.  Or... what I have done 
is to :

  if (error == 0) { /* success */
   vref(dvp);
   *(ap->vpp)=dvp;
  }

The syscall doesn't really check anything other than the return code, and if
its 0 it just vput(9)s the vnode, then it vput(9)s the DVP.  What this 
should do is just have it double decrement the DVP.. which in this case is
fine.  Problem is I don't think I can make that assumption about other
things that may call VOP_SYMLINK(9), not that I imagine there are (m)any.

Suggestions for a better/cleaner way to do this?

-- 
David Cross                               | email: crossd@cs.rpi.edu 
Lab Director                              | Rm: 308 Lally Hall
Rensselaer Polytechnic Institute,         | Ph: 518.276.2860            
Department of Computer Science            | Fax: 518.276.4033
I speak only for myself.                  | WinNT:Linux::Linux:FreeBSD

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-fs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200211291011.gATABpU07028>