Revert previous commit. The null-pointer function call (a dereference

on ia64) was not the result of a change in the vector operations. It
was caused by the NFS locking code using a FIFO and those bypassing
the vnode. This indirectly caused the panic. The NFS locking code has
been changed.

Requested by: phk
This commit is contained in:
marcel 2004-12-11 21:33:35 +00:00
parent 45b9cec85c
commit 860981b28f
2 changed files with 8 additions and 8 deletions

View File

@ -1476,7 +1476,7 @@ ext2fifo_read(ap)
uio = ap->a_uio; uio = ap->a_uio;
resid = uio->uio_resid; resid = uio->uio_resid;
error = vop_read(&fifo_specops, ap); error = fifo_specops.vop_read(ap);
ip = VTOI(ap->a_vp); ip = VTOI(ap->a_vp);
if ((ap->a_vp->v_mount->mnt_flag & MNT_NOATIME) == 0 && ip != NULL && if ((ap->a_vp->v_mount->mnt_flag & MNT_NOATIME) == 0 && ip != NULL &&
(uio->uio_resid != resid || (error == 0 && resid != 0))) (uio->uio_resid != resid || (error == 0 && resid != 0)))
@ -1502,7 +1502,7 @@ ext2fifo_write(ap)
uio = ap->a_uio; uio = ap->a_uio;
resid = uio->uio_resid; resid = uio->uio_resid;
error = vop_write(&fifo_specops, ap); error = fifo_specops.vop_write(ap);
ip = VTOI(ap->a_vp); ip = VTOI(ap->a_vp);
if (ip != NULL && (uio->uio_resid != resid || (error == 0 && resid != 0))) if (ip != NULL && (uio->uio_resid != resid || (error == 0 && resid != 0)))
VTOI(ap->a_vp)->i_flag |= IN_CHANGE | IN_UPDATE; VTOI(ap->a_vp)->i_flag |= IN_CHANGE | IN_UPDATE;
@ -1529,7 +1529,7 @@ ext2fifo_close(ap)
if (vp->v_usecount > 1) if (vp->v_usecount > 1)
ext2_itimes(vp); ext2_itimes(vp);
VI_UNLOCK(vp); VI_UNLOCK(vp);
return (vop_close(&fifo_specops, ap)); return (fifo_specops.vop_close(ap));
} }
/* /*
@ -1543,7 +1543,7 @@ ext2fifo_kqfilter(ap)
{ {
int error; int error;
error = vop_kqfilter(&fifo_specops, ap); error = fifo_specops.vop_kqfilter(ap);
if (error) if (error)
error = ext2_kqfilter(ap); error = ext2_kqfilter(ap);
return (error); return (error);

View File

@ -1476,7 +1476,7 @@ ext2fifo_read(ap)
uio = ap->a_uio; uio = ap->a_uio;
resid = uio->uio_resid; resid = uio->uio_resid;
error = vop_read(&fifo_specops, ap); error = fifo_specops.vop_read(ap);
ip = VTOI(ap->a_vp); ip = VTOI(ap->a_vp);
if ((ap->a_vp->v_mount->mnt_flag & MNT_NOATIME) == 0 && ip != NULL && if ((ap->a_vp->v_mount->mnt_flag & MNT_NOATIME) == 0 && ip != NULL &&
(uio->uio_resid != resid || (error == 0 && resid != 0))) (uio->uio_resid != resid || (error == 0 && resid != 0)))
@ -1502,7 +1502,7 @@ ext2fifo_write(ap)
uio = ap->a_uio; uio = ap->a_uio;
resid = uio->uio_resid; resid = uio->uio_resid;
error = vop_write(&fifo_specops, ap); error = fifo_specops.vop_write(ap);
ip = VTOI(ap->a_vp); ip = VTOI(ap->a_vp);
if (ip != NULL && (uio->uio_resid != resid || (error == 0 && resid != 0))) if (ip != NULL && (uio->uio_resid != resid || (error == 0 && resid != 0)))
VTOI(ap->a_vp)->i_flag |= IN_CHANGE | IN_UPDATE; VTOI(ap->a_vp)->i_flag |= IN_CHANGE | IN_UPDATE;
@ -1529,7 +1529,7 @@ ext2fifo_close(ap)
if (vp->v_usecount > 1) if (vp->v_usecount > 1)
ext2_itimes(vp); ext2_itimes(vp);
VI_UNLOCK(vp); VI_UNLOCK(vp);
return (vop_close(&fifo_specops, ap)); return (fifo_specops.vop_close(ap));
} }
/* /*
@ -1543,7 +1543,7 @@ ext2fifo_kqfilter(ap)
{ {
int error; int error;
error = vop_kqfilter(&fifo_specops, ap); error = fifo_specops.vop_kqfilter(ap);
if (error) if (error)
error = ext2_kqfilter(ap); error = ext2_kqfilter(ap);
return (error); return (error);