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:
parent
45b9cec85c
commit
860981b28f
@ -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);
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user