diff options
author | phk <phk@FreeBSD.org> | 2004-12-14 21:30:45 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2004-12-14 21:30:45 +0000 |
commit | d612258e38cf241fba1d286afb4c1888dac92628 (patch) | |
tree | 895ba2ca047da1d751c74e1a7c1e0cc70dc713fc /sys/ufs | |
parent | eab55e158905b42bd76bba4164b30ab5db8d0d86 (diff) | |
download | FreeBSD-src-d612258e38cf241fba1d286afb4c1888dac92628.zip FreeBSD-src-d612258e38cf241fba1d286afb4c1888dac92628.tar.gz |
Implement simpler panics for VOP_{read,write} on fifos.
Diffstat (limited to 'sys/ufs')
-rw-r--r-- | sys/ufs/ufs/ufs_vnops.c | 69 |
1 files changed, 8 insertions, 61 deletions
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c index ede11e3..29f7af9 100644 --- a/sys/ufs/ufs/ufs_vnops.c +++ b/sys/ufs/ufs/ufs_vnops.c @@ -109,8 +109,6 @@ static vop_symlink_t ufs_symlink; static vop_whiteout_t ufs_whiteout; static vop_close_t ufsfifo_close; static vop_kqfilter_t ufsfifo_kqfilter; -static vop_read_t ufsfifo_read; -static vop_write_t ufsfifo_write; static int filt_ufsread(struct knote *kn, long hint); static int filt_ufswrite(struct knote *kn, long hint); static int filt_ufsvnode(struct knote *kn, long hint); @@ -2003,57 +2001,6 @@ ufs_print(ap) } /* - * Read wrapper for fifos. - */ -static int -ufsfifo_read(ap) - struct vop_read_args /* { - struct vnode *a_vp; - struct uio *a_uio; - int a_ioflag; - struct ucred *a_cred; - } */ *ap; -{ - int error, resid; - struct inode *ip; - struct uio *uio; - - uio = ap->a_uio; - resid = uio->uio_resid; - error = fifo_specops.vop_read(ap); - ip = VTOI(ap->a_vp); - if ((ap->a_vp->v_mount->mnt_flag & MNT_NOATIME) == 0 && ip != NULL && - (uio->uio_resid != resid || (error == 0 && resid != 0))) - ip->i_flag |= IN_ACCESS; - return (error); -} - -/* - * Write wrapper for fifos. - */ -static int -ufsfifo_write(ap) - struct vop_write_args /* { - struct vnode *a_vp; - struct uio *a_uio; - int a_ioflag; - struct ucred *a_cred; - } */ *ap; -{ - int error, resid; - struct inode *ip; - struct uio *uio; - - uio = ap->a_uio; - resid = uio->uio_resid; - error = fifo_specops.vop_write(ap); - ip = VTOI(ap->a_vp); - if (ip != NULL && (uio->uio_resid != resid || (error == 0 && resid != 0))) - ip->i_flag |= IN_CHANGE | IN_UPDATE; - return (error); -} - -/* * Close wrapper for fifos. * * Update the times on the inode then do device close. @@ -2612,9 +2559,9 @@ struct vop_vector ufs_vnodeops = { .vop_symlink = ufs_symlink, .vop_whiteout = ufs_whiteout, #ifdef UFS_EXTATTR - .vop_getextattr = ufs_getextattr, - .vop_deleteextattr = ufs_deleteextattr, - .vop_setextattr = ufs_setextattr, + .vop_getextattr = ufs_getextattr, + .vop_deleteextattr = ufs_deleteextattr, + .vop_setextattr = ufs_setextattr, #endif #ifdef UFS_ACL .vop_getacl = ufs_getacl, @@ -2632,17 +2579,17 @@ struct vop_vector ufs_fifoops = { .vop_inactive = ufs_inactive, .vop_kqfilter = ufsfifo_kqfilter, .vop_print = ufs_print, - .vop_read = ufsfifo_read, + .vop_read = VOP_PANIC, .vop_reclaim = ufs_reclaim, .vop_setattr = ufs_setattr, #ifdef MAC .vop_setlabel = vop_stdsetlabel_ea, #endif - .vop_write = ufsfifo_write, + .vop_write = VOP_PANIC, #ifdef UFS_EXTATTR - .vop_getextattr = ufs_getextattr, - .vop_deleteextattr = ufs_deleteextattr, - .vop_setextattr = ufs_setextattr, + .vop_getextattr = ufs_getextattr, + .vop_deleteextattr = ufs_deleteextattr, + .vop_setextattr = ufs_setextattr, #endif #ifdef UFS_ACL .vop_getacl = ufs_getacl, |