expand parameters to functions; READDIR drops eofflag;
[unix-history] / usr / src / sys / ufs / ufs / ufs_vnops.c
index 69cfb7b..b4fb50b 100644 (file)
@@ -4,7 +4,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)ufs_vnops.c 7.98 (Berkeley) %G%
+ *     @(#)ufs_vnops.c 7.99 (Berkeley) %G%
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -58,7 +58,12 @@ union _qcvt {
  */
 int
 ufs_create(ap)
  */
 int
 ufs_create(ap)
-       struct vop_create_args *ap;
+       struct vop_create_args /* {
+               struct vnode *a_dvp;
+               struct vnode **a_vpp;
+               struct componentname *a_cnp;
+               struct vattr *a_vap;
+       } */ *ap;
 {
        int error;
 
 {
        int error;
 
@@ -75,7 +80,12 @@ ufs_create(ap)
 /* ARGSUSED */
 int
 ufs_mknod(ap)
 /* ARGSUSED */
 int
 ufs_mknod(ap)
-       struct vop_mknod_args *ap;
+       struct vop_mknod_args /* {
+               struct vnode *a_dvp;
+               struct vnode **a_vpp;
+               struct componentname *a_cnp;
+               struct vattr *a_vap;
+       } */ *ap;
 {
        register struct vattr *vap = ap->a_vap;
        register struct vnode **vpp = ap->a_vpp;
 {
        register struct vattr *vap = ap->a_vap;
        register struct vnode **vpp = ap->a_vpp;
@@ -115,7 +125,12 @@ ufs_mknod(ap)
 /* ARGSUSED */
 int
 ufs_open(ap)
 /* ARGSUSED */
 int
 ufs_open(ap)
-       struct vop_open_args *ap;
+       struct vop_open_args /* {
+               struct vnode *a_vp;
+               int  a_mode;
+               struct ucred *a_cred;
+               struct proc *a_p;
+       } */ *ap;
 {
 
        return (0);
 {
 
        return (0);
@@ -129,7 +144,12 @@ ufs_open(ap)
 /* ARGSUSED */
 int
 ufs_close(ap)
 /* ARGSUSED */
 int
 ufs_close(ap)
-       struct vop_close_args *ap;
+       struct vop_close_args /* {
+               struct vnode *a_vp;
+               int  a_fflag;
+               struct ucred *a_cred;
+               struct proc *a_p;
+       } */ *ap;
 {
        register struct vnode *vp = ap->a_vp;
        register struct inode *ip = VTOI(vp);
 {
        register struct vnode *vp = ap->a_vp;
        register struct inode *ip = VTOI(vp);
@@ -146,7 +166,12 @@ ufs_close(ap)
  */
 int
 ufs_access(ap)
  */
 int
 ufs_access(ap)
-       struct vop_access_args *ap;
+       struct vop_access_args /* {
+               struct vnode *a_vp;
+               int  a_mode;
+               struct ucred *a_cred;
+               struct proc *a_p;
+       } */ *ap;
 {
        USES_VOP_ISLOCKED;
        register struct vnode *vp = ap->a_vp;
 {
        USES_VOP_ISLOCKED;
        register struct vnode *vp = ap->a_vp;
@@ -199,7 +224,12 @@ found:
 /* ARGSUSED */
 int
 ufs_getattr(ap)
 /* ARGSUSED */
 int
 ufs_getattr(ap)
-       struct vop_getattr_args *ap;
+       struct vop_getattr_args /* {
+               struct vnode *a_vp;
+               struct vattr *a_vap;
+               struct ucred *a_cred;
+               struct proc *a_p;
+       } */ *ap;
 {
        register struct vnode *vp = ap->a_vp;
        register struct inode *ip = VTOI(vp);
 {
        register struct vnode *vp = ap->a_vp;
        register struct inode *ip = VTOI(vp);
@@ -240,7 +270,12 @@ ufs_getattr(ap)
  */
 int
 ufs_setattr(ap)
  */
 int
 ufs_setattr(ap)
-       struct vop_setattr_args *ap;
+       struct vop_setattr_args /* {
+               struct vnode *a_vp;
+               struct vattr *a_vap;
+               struct ucred *a_cred;
+               struct proc *a_p;
+       } */ *ap;
 {
        USES_VOP_TRUNCATE;
        USES_VOP_UPDATE;
 {
        USES_VOP_TRUNCATE;
        USES_VOP_UPDATE;
@@ -270,7 +305,7 @@ ufs_setattr(ap)
        if (vap->va_size != VNOVAL) {
                if (vp->v_type == VDIR)
                        return (EISDIR);
        if (vap->va_size != VNOVAL) {
                if (vp->v_type == VDIR)
                        return (EISDIR);
-               if (error = VOP_TRUNCATE(vp, vap->va_size, 0, cred))
+               if (error = VOP_TRUNCATE(vp, vap->va_size, 0, cred, p))
                        return (error);
        }
        ip = VTOI(vp);
                        return (error);
        }
        ip = VTOI(vp);
@@ -449,7 +484,14 @@ good:
 /* ARGSUSED */
 int
 ufs_ioctl(ap)
 /* ARGSUSED */
 int
 ufs_ioctl(ap)
-       struct vop_ioctl_args *ap;
+       struct vop_ioctl_args /* {
+               struct vnode *a_vp;
+               int  a_command;
+               caddr_t  a_data;
+               int  a_fflag;
+               struct ucred *a_cred;
+               struct proc *a_p;
+       } */ *ap;
 {
 
        return (ENOTTY);
 {
 
        return (ENOTTY);
@@ -458,7 +500,13 @@ ufs_ioctl(ap)
 /* ARGSUSED */
 int
 ufs_select(ap)
 /* ARGSUSED */
 int
 ufs_select(ap)
-       struct vop_select_args *ap;
+       struct vop_select_args /* {
+               struct vnode *a_vp;
+               int  a_which;
+               int  a_fflags;
+               struct ucred *a_cred;
+               struct proc *a_p;
+       } */ *ap;
 {
 
        /*
 {
 
        /*
@@ -475,7 +523,12 @@ ufs_select(ap)
 /* ARGSUSED */
 int
 ufs_mmap(ap)
 /* ARGSUSED */
 int
 ufs_mmap(ap)
-       struct vop_mmap_args *ap;
+       struct vop_mmap_args /* {
+               struct vnode *a_vp;
+               int  a_fflags;
+               struct ucred *a_cred;
+               struct proc *a_p;
+       } */ *ap;
 {
 
        return (EINVAL);
 {
 
        return (EINVAL);
@@ -489,7 +542,12 @@ ufs_mmap(ap)
 /* ARGSUSED */
 int
 ufs_seek(ap)
 /* ARGSUSED */
 int
 ufs_seek(ap)
-       struct vop_seek_args *ap;
+       struct vop_seek_args /* {
+               struct vnode *a_vp;
+               off_t  a_oldoff;
+               off_t  a_newoff;
+               struct ucred *a_cred;
+       } */ *ap;
 {
 
        return (0);
 {
 
        return (0);
@@ -502,7 +560,11 @@ ufs_seek(ap)
  */
 int
 ufs_remove(ap)
  */
 int
 ufs_remove(ap)
-       struct vop_remove_args *ap;
+       struct vop_remove_args /* {
+               struct vnode *a_dvp;
+               struct vnode *a_vp;
+               struct componentname *a_cnp;
+       } */ *ap;
 {
        register struct inode *ip, *dp;
        int error;
 {
        register struct inode *ip, *dp;
        int error;
@@ -527,7 +589,11 @@ ufs_remove(ap)
  */
 int
 ufs_link(ap)
  */
 int
 ufs_link(ap)
-       struct vop_link_args *ap;
+       struct vop_link_args /* {
+               struct vnode *a_vp;
+               struct vnode *a_tdvp;
+               struct componentname *a_cnp;
+       } */ *ap;
 {
        USES_VOP_UPDATE;
        USES_VOP_ABORTOP;
 {
        USES_VOP_UPDATE;
        USES_VOP_ABORTOP;
@@ -758,7 +824,14 @@ bad:
  */
 int
 ufs_rename(ap)
  */
 int
 ufs_rename(ap)
-       struct vop_rename_args *ap;
+       struct vop_rename_args  /* {
+               struct vnode *a_fdvp;
+               struct vnode *a_fvp;
+               struct componentname *a_fcnp;
+               struct vnode *a_tdvp;
+               struct vnode *a_tvp;
+               struct componentname *a_tcnp;
+       } */ *ap;
 {
        USES_VOP_ABORTOP;
        USES_VOP_ACCESS;
 {
        USES_VOP_ABORTOP;
        USES_VOP_ACCESS;
@@ -993,7 +1066,7 @@ ufs_rename(ap)
                        if (--xp->i_nlink != 0)
                                panic("rename: linked directory");
                        error = VOP_TRUNCATE(ITOV(xp), (off_t)0, IO_SYNC,
                        if (--xp->i_nlink != 0)
                                panic("rename: linked directory");
                        error = VOP_TRUNCATE(ITOV(xp), (off_t)0, IO_SYNC,
-                           tcnp->cn_cred);
+                           tcnp->cn_cred, tcnp->cn_proc);
                }
                xp->i_flag |= ICHG;
                ufs_iput(xp);
                }
                xp->i_flag |= ICHG;
                ufs_iput(xp);
@@ -1106,9 +1179,13 @@ static struct dirtemplate mastertemplate = {
  */
 int
 ufs_mkdir(ap)
  */
 int
 ufs_mkdir(ap)
-       struct vop_mkdir_args *ap;
+       struct vop_mkdir_args /* {
+               struct vnode *a_dvp;
+               struct vnode **a_vpp;
+               struct componentname *a_cnp;
+               struct vattr *a_vap;
+       } */ *ap;
 {
 {
-       USES_VOP_TRUNCATE;
        USES_VOP_UPDATE;
        USES_VOP_VALLOC;
        USES_VOP_VFREE;
        USES_VOP_UPDATE;
        USES_VOP_VALLOC;
        USES_VOP_VFREE;
@@ -1218,7 +1295,12 @@ bad:
  */
 int
 ufs_rmdir(ap)
  */
 int
 ufs_rmdir(ap)
-       struct vop_rmdir_args *ap;
+       struct vop_rmdir_args /* {
+               struct vnodeop_desc *a_desc;
+               struct vnode *a_dvp;
+               struct vnode *a_vp;
+               struct componentname *a_cnp;
+       } */ *ap;
 {
        USES_VOP_TRUNCATE;
        register struct vnode *dvp = ap->a_dvp;
 {
        USES_VOP_TRUNCATE;
        register struct vnode *dvp = ap->a_dvp;
@@ -1273,7 +1355,8 @@ ufs_rmdir(ap)
         * worry about them later.
         */
        ip->i_nlink -= 2;
         * worry about them later.
         */
        ip->i_nlink -= 2;
-       error = VOP_TRUNCATE(ap->a_vp, (off_t)0, IO_SYNC, cnp->cn_cred);
+       error = VOP_TRUNCATE(ap->a_vp, (off_t)0, IO_SYNC, cnp->cn_cred,
+           cnp->cn_proc);
        cache_purge(ITOV(ip));
 out:
        if (dvp)
        cache_purge(ITOV(ip));
 out:
        if (dvp)
@@ -1287,7 +1370,13 @@ out:
  */
 int
 ufs_symlink(ap)
  */
 int
 ufs_symlink(ap)
-       struct vop_symlink_args *ap;
+       struct vop_symlink_args /* {
+               struct vnode *a_dvp;
+               struct vnode **a_vpp;
+               struct componentname *a_cnp;
+               struct vattr *a_vap;
+               char *a_target;
+       } */ *ap;
 {
        register struct vnode *vp, **vpp = ap->a_vpp;
        register struct inode *ip;
 {
        register struct vnode *vp, **vpp = ap->a_vpp;
        register struct inode *ip;
@@ -1322,7 +1411,11 @@ ufs_symlink(ap)
  */
 int
 ufs_readdir(ap)
  */
 int
 ufs_readdir(ap)
-       struct vop_readdir_args *ap;
+       struct vop_readdir_args /* {
+               struct vnode *a_vp;
+               struct uio *a_uio;
+               struct ucred *a_cred;
+       } */ *ap;
 {
        USES_VOP_READ;
        register struct uio *uio = ap->a_uio;
 {
        USES_VOP_READ;
        register struct uio *uio = ap->a_uio;
@@ -1337,10 +1430,6 @@ ufs_readdir(ap)
        uio->uio_iov->iov_len = count;
        error = VOP_READ(ap->a_vp, uio, 0, ap->a_cred);
        uio->uio_resid += lost;
        uio->uio_iov->iov_len = count;
        error = VOP_READ(ap->a_vp, uio, 0, ap->a_cred);
        uio->uio_resid += lost;
-       if ((VTOI(ap->a_vp)->i_size - uio->uio_offset) <= 0)
-               *ap->a_eofflagp = 1;
-       else
-               *ap->a_eofflagp = 0;
        return (error);
 }
 
        return (error);
 }
 
@@ -1349,7 +1438,11 @@ ufs_readdir(ap)
  */
 int
 ufs_readlink(ap)
  */
 int
 ufs_readlink(ap)
-       struct vop_readlink_args *ap;
+       struct vop_readlink_args /* {
+               struct vnode *a_vp;
+               struct uio *a_uio;
+               struct ucred *a_cred;
+       } */ *ap;
 {
        register struct vnode *vp = ap->a_vp;
        register struct inode *ip = VTOI(vp);
 {
        register struct vnode *vp = ap->a_vp;
        register struct inode *ip = VTOI(vp);
@@ -1369,7 +1462,10 @@ ufs_readlink(ap)
 /* ARGSUSED */
 int
 ufs_abortop(ap)
 /* ARGSUSED */
 int
 ufs_abortop(ap)
-       struct vop_abortop_args *ap;
+       struct vop_abortop_args /* {
+               struct vnode *a_dvp;
+               struct componentname *a_cnp;
+       } */ *ap;
 {
        if ((ap->a_cnp->cn_flags & (HASBUF | SAVESTART)) == HASBUF)
                FREE(ap->a_cnp->cn_pnbuf, M_NAMEI);
 {
        if ((ap->a_cnp->cn_flags & (HASBUF | SAVESTART)) == HASBUF)
                FREE(ap->a_cnp->cn_pnbuf, M_NAMEI);
@@ -1381,7 +1477,9 @@ ufs_abortop(ap)
  */
 int
 ufs_lock(ap)
  */
 int
 ufs_lock(ap)
-       struct vop_lock_args *ap;
+       struct vop_lock_args /* {
+               struct vnode *a_vp;
+       } */ *ap;
 {
        register struct inode *ip = VTOI(ap->a_vp);
 
 {
        register struct inode *ip = VTOI(ap->a_vp);
 
@@ -1394,7 +1492,9 @@ ufs_lock(ap)
  */
 int
 ufs_unlock(ap)
  */
 int
 ufs_unlock(ap)
-       struct vop_unlock_args *ap;
+       struct vop_unlock_args /* {
+               struct vnode *a_vp;
+       } */ *ap;
 {
        register struct inode *ip = VTOI(ap->a_vp);
 
 {
        register struct inode *ip = VTOI(ap->a_vp);
 
@@ -1409,7 +1509,9 @@ ufs_unlock(ap)
  */
 int
 ufs_islocked(ap)
  */
 int
 ufs_islocked(ap)
-       struct vop_islocked_args *ap;
+       struct vop_islocked_args /* {
+               struct vnode *a_vp;
+       } */ *ap;
 {
 
        if (VTOI(ap->a_vp)->i_flag & ILOCKED)
 {
 
        if (VTOI(ap->a_vp)->i_flag & ILOCKED)
@@ -1423,7 +1525,9 @@ ufs_islocked(ap)
  */
 int
 ufs_strategy(ap)
  */
 int
 ufs_strategy(ap)
-       struct vop_strategy_args *ap;
+       struct vop_strategy_args /* {
+               struct buf *a_bp;
+       } */ *ap;
 {
        USES_VOP_BMAP;
        register struct buf *bp = ap->a_bp;
 {
        USES_VOP_BMAP;
        register struct buf *bp = ap->a_bp;
@@ -1460,7 +1564,9 @@ ufs_strategy(ap)
  */
 int
 ufs_print(ap)
  */
 int
 ufs_print(ap)
-       struct vop_print_args *ap;
+       struct vop_print_args /* {
+               struct vnode *a_vp;
+       } */ *ap;
 {
        register struct vnode *vp = ap->a_vp;
        register struct inode *ip = VTOI(vp);
 {
        register struct vnode *vp = ap->a_vp;
        register struct inode *ip = VTOI(vp);
@@ -1486,7 +1592,12 @@ ufs_print(ap)
  */
 int
 ufsspec_read(ap)
  */
 int
 ufsspec_read(ap)
-       struct vop_read_args *ap;
+       struct vop_read_args /* {
+               struct vnode *a_vp;
+               struct uio *a_uio;
+               int  a_ioflag;
+               struct ucred *a_cred;
+       } */ *ap;
 {
        extern int (**spec_vnodeop_p)();
 
 {
        extern int (**spec_vnodeop_p)();
 
@@ -1502,7 +1613,12 @@ ufsspec_read(ap)
  */
 int
 ufsspec_write(ap)
  */
 int
 ufsspec_write(ap)
-       struct vop_write_args *ap;
+       struct vop_write_args /* {
+               struct vnode *a_vp;
+               struct uio *a_uio;
+               int  a_ioflag;
+               struct ucred *a_cred;
+       } */ *ap;
 {
        extern int (**spec_vnodeop_p)();
 
 {
        extern int (**spec_vnodeop_p)();
 
@@ -1520,7 +1636,12 @@ ufsspec_write(ap)
  */
 int
 ufsspec_close(ap)
  */
 int
 ufsspec_close(ap)
-       struct vop_close_args *ap;
+       struct vop_close_args /* {
+               struct vnode *a_vp;
+               int  a_fflag;
+               struct ucred *a_cred;
+               struct proc *a_p;
+       } */ *ap;
 {
        extern int (**spec_vnodeop_p)();
        register struct inode *ip = VTOI(ap->a_vp);
 {
        extern int (**spec_vnodeop_p)();
        register struct inode *ip = VTOI(ap->a_vp);
@@ -1536,7 +1657,12 @@ ufsspec_close(ap)
  */
 int
 ufsfifo_read(ap)
  */
 int
 ufsfifo_read(ap)
-       struct vop_read_args *ap;
+       struct vop_read_args /* {
+               struct vnode *a_vp;
+               struct uio *a_uio;
+               int  a_ioflag;
+               struct ucred *a_cred;
+       } */ *ap;
 {
        extern int (**fifo_vnodeop_p)();
 
 {
        extern int (**fifo_vnodeop_p)();
 
@@ -1552,7 +1678,12 @@ ufsfifo_read(ap)
  */
 int
 ufsfifo_write(ap)
  */
 int
 ufsfifo_write(ap)
-       struct vop_write_args *ap;
+       struct vop_write_args /* {
+               struct vnode *a_vp;
+               struct uio *a_uio;
+               int  a_ioflag;
+               struct ucred *a_cred;
+       } */ *ap;
 {
        extern int (**fifo_vnodeop_p)();
 
 {
        extern int (**fifo_vnodeop_p)();
 
@@ -1569,7 +1700,12 @@ ufsfifo_write(ap)
  * Update the times on the inode then do device close.
  */
 ufsfifo_close(ap)
  * Update the times on the inode then do device close.
  */
 ufsfifo_close(ap)
-       struct vop_close_args *ap;
+       struct vop_close_args /* {
+               struct vnode *a_vp;
+               int  a_fflag;
+               struct ucred *a_cred;
+               struct proc *a_p;
+       } */ *ap;
 {
        extern int (**fifo_vnodeop_p)();
        register struct inode *ip = VTOI(ap->a_vp);
 {
        extern int (**fifo_vnodeop_p)();
        register struct inode *ip = VTOI(ap->a_vp);
@@ -1585,7 +1721,13 @@ ufsfifo_close(ap)
  */
 int
 ufs_advlock(ap)
  */
 int
 ufs_advlock(ap)
-       struct vop_advlock_args *ap;
+       struct vop_advlock_args /* {
+               struct vnode *a_vp;
+               caddr_t  a_id;
+               int  a_op;
+               struct flock *a_fl;
+               int  a_flags;
+       } */ *ap;
 {
        register struct inode *ip = VTOI(ap->a_vp);
        register struct flock *fl = ap->a_fl;
 {
        register struct inode *ip = VTOI(ap->a_vp);
        register struct flock *fl = ap->a_fl;