summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2004-12-14 21:30:45 +0000
committerphk <phk@FreeBSD.org>2004-12-14 21:30:45 +0000
commitd612258e38cf241fba1d286afb4c1888dac92628 (patch)
tree895ba2ca047da1d751c74e1a7c1e0cc70dc713fc
parenteab55e158905b42bd76bba4164b30ab5db8d0d86 (diff)
downloadFreeBSD-src-d612258e38cf241fba1d286afb4c1888dac92628.zip
FreeBSD-src-d612258e38cf241fba1d286afb4c1888dac92628.tar.gz
Implement simpler panics for VOP_{read,write} on fifos.
-rw-r--r--sys/gnu/ext2fs/ext2_vnops.c57
-rw-r--r--sys/gnu/fs/ext2fs/ext2_vnops.c57
-rw-r--r--sys/ufs/ufs/ufs_vnops.c69
3 files changed, 12 insertions, 171 deletions
diff --git a/sys/gnu/ext2fs/ext2_vnops.c b/sys/gnu/ext2fs/ext2_vnops.c
index ebc39d0..f156f8b 100644
--- a/sys/gnu/ext2fs/ext2_vnops.c
+++ b/sys/gnu/ext2fs/ext2_vnops.c
@@ -108,8 +108,6 @@ static vop_symlink_t ext2_symlink;
static vop_write_t ext2_write;
static vop_close_t ext2fifo_close;
static vop_kqfilter_t ext2fifo_kqfilter;
-static vop_read_t ext2fifo_read;
-static vop_write_t ext2fifo_write;
static int filt_ext2read(struct knote *kn, long hint);
static int filt_ext2write(struct knote *kn, long hint);
static int filt_ext2vnode(struct knote *kn, long hint);
@@ -159,10 +157,10 @@ struct vop_vector ext2_fifoops = {
.vop_inactive = ext2_inactive,
.vop_kqfilter = ext2fifo_kqfilter,
.vop_print = ext2_print,
- .vop_read = ext2fifo_read,
+ .vop_read = VOP_PANIC,
.vop_reclaim = ext2_reclaim,
.vop_setattr = ext2_setattr,
- .vop_write = ext2fifo_write,
+ .vop_write = VOP_PANIC,
};
#include <gnu/ext2fs/ext2_readwrite.c>
@@ -1459,57 +1457,6 @@ ext2_print(ap)
}
/*
- * Read wrapper for fifos.
- */
-static int
-ext2fifo_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)))
- VTOI(ap->a_vp)->i_flag |= IN_ACCESS;
- return (error);
-}
-
-/*
- * Write wrapper for fifos.
- */
-static int
-ext2fifo_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)))
- VTOI(ap->a_vp)->i_flag |= IN_CHANGE | IN_UPDATE;
- return (error);
-}
-
-/*
* Close wrapper for fifos.
*
* Update the times on the inode then do device close.
diff --git a/sys/gnu/fs/ext2fs/ext2_vnops.c b/sys/gnu/fs/ext2fs/ext2_vnops.c
index ebc39d0..f156f8b 100644
--- a/sys/gnu/fs/ext2fs/ext2_vnops.c
+++ b/sys/gnu/fs/ext2fs/ext2_vnops.c
@@ -108,8 +108,6 @@ static vop_symlink_t ext2_symlink;
static vop_write_t ext2_write;
static vop_close_t ext2fifo_close;
static vop_kqfilter_t ext2fifo_kqfilter;
-static vop_read_t ext2fifo_read;
-static vop_write_t ext2fifo_write;
static int filt_ext2read(struct knote *kn, long hint);
static int filt_ext2write(struct knote *kn, long hint);
static int filt_ext2vnode(struct knote *kn, long hint);
@@ -159,10 +157,10 @@ struct vop_vector ext2_fifoops = {
.vop_inactive = ext2_inactive,
.vop_kqfilter = ext2fifo_kqfilter,
.vop_print = ext2_print,
- .vop_read = ext2fifo_read,
+ .vop_read = VOP_PANIC,
.vop_reclaim = ext2_reclaim,
.vop_setattr = ext2_setattr,
- .vop_write = ext2fifo_write,
+ .vop_write = VOP_PANIC,
};
#include <gnu/ext2fs/ext2_readwrite.c>
@@ -1459,57 +1457,6 @@ ext2_print(ap)
}
/*
- * Read wrapper for fifos.
- */
-static int
-ext2fifo_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)))
- VTOI(ap->a_vp)->i_flag |= IN_ACCESS;
- return (error);
-}
-
-/*
- * Write wrapper for fifos.
- */
-static int
-ext2fifo_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)))
- VTOI(ap->a_vp)->i_flag |= IN_CHANGE | IN_UPDATE;
- return (error);
-}
-
-/*
* Close wrapper for fifos.
*
* Update the times on the inode then do device close.
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,
OpenPOWER on IntegriCloud