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>
