projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix readdir for non-linear union stacks
[unix-history]
/
usr
/
src
/
sys
/
kern
/
vfs_syscalls.c
diff --git
a/usr/src/sys/kern/vfs_syscalls.c
b/usr/src/sys/kern/vfs_syscalls.c
index
b1dcf00
..
4063304
100644
(file)
--- a/
usr/src/sys/kern/vfs_syscalls.c
+++ b/
usr/src/sys/kern/vfs_syscalls.c
@@
-9,7
+9,7
@@
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)vfs_syscalls.c 8.2
7
(Berkeley) %G%
+ * @(#)vfs_syscalls.c 8.2
8
(Berkeley) %G%
*/
#include <sys/param.h>
*/
#include <sys/param.h>
@@
-232,7
+232,6
@@
checkdirs(olddp)
vrele(fdp->fd_cdir);
VREF(newdp);
fdp->fd_cdir = newdp;
vrele(fdp->fd_cdir);
VREF(newdp);
fdp->fd_cdir = newdp;
- printf("patch cdir for proc %d\n", p->p_pid);
}
if (fdp->fd_rdir == olddp) {
vrele(fdp->fd_rdir);
}
if (fdp->fd_rdir == olddp) {
vrele(fdp->fd_rdir);
@@
-2121,13
+2120,13
@@
unionread:
#ifdef UNION
{
extern int (**union_vnodeop_p)();
#ifdef UNION
{
extern int (**union_vnodeop_p)();
- extern struct vnode *union_
lowervp
__P((struct vnode *));
+ extern struct vnode *union_
dircache
__P((struct vnode *));
if ((uap->count == auio.uio_resid) &&
(vp->v_op == union_vnodeop_p)) {
struct vnode *lvp;
if ((uap->count == auio.uio_resid) &&
(vp->v_op == union_vnodeop_p)) {
struct vnode *lvp;
- lvp = union_
lowervp
(vp);
+ lvp = union_
dircache
(vp);
if (lvp != NULLVP) {
struct vattr va;
if (lvp != NULLVP) {
struct vattr va;
@@
-2137,13
+2136,12
@@
unionread:
*/
error = VOP_GETATTR(vp, &va, fp->f_cred, p);
if (va.va_flags & OPAQUE) {
*/
error = VOP_GETATTR(vp, &va, fp->f_cred, p);
if (va.va_flags & OPAQUE) {
- v
rele
(lvp);
+ v
put
(lvp);
lvp = NULL;
}
}
if (lvp != NULLVP) {
lvp = NULL;
}
}
if (lvp != NULLVP) {
- VOP_LOCK(lvp);
error = VOP_OPEN(lvp, FREAD, fp->f_cred, p);
VOP_UNLOCK(lvp);
error = VOP_OPEN(lvp, FREAD, fp->f_cred, p);
VOP_UNLOCK(lvp);
@@
-2228,13
+2226,13
@@
unionread:
#ifdef UNION
{
extern int (**union_vnodeop_p)();
#ifdef UNION
{
extern int (**union_vnodeop_p)();
- extern struct vnode *union_
lowervp
__P((struct vnode *));
+ extern struct vnode *union_
dircache
__P((struct vnode *));
if ((uap->count == auio.uio_resid) &&
(vp->v_op == union_vnodeop_p)) {
struct vnode *lvp;
if ((uap->count == auio.uio_resid) &&
(vp->v_op == union_vnodeop_p)) {
struct vnode *lvp;
- lvp = union_
lowervp
(vp);
+ lvp = union_
dircache
(vp);
if (lvp != NULLVP) {
struct vattr va;
if (lvp != NULLVP) {
struct vattr va;
@@
-2244,13
+2242,12
@@
unionread:
*/
error = VOP_GETATTR(vp, &va, fp->f_cred, p);
if (va.va_flags & OPAQUE) {
*/
error = VOP_GETATTR(vp, &va, fp->f_cred, p);
if (va.va_flags & OPAQUE) {
- v
rele
(lvp);
+ v
put
(lvp);
lvp = NULL;
}
}
if (lvp != NULLVP) {
lvp = NULL;
}
}
if (lvp != NULLVP) {
- VOP_LOCK(lvp);
error = VOP_OPEN(lvp, FREAD, fp->f_cred, p);
VOP_UNLOCK(lvp);
error = VOP_OPEN(lvp, FREAD, fp->f_cred, p);
VOP_UNLOCK(lvp);