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>