The branch main has been updated by des:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=567e6250c003eeb251b4bc8dbe60d2adabab2988

commit 567e6250c003eeb251b4bc8dbe60d2adabab2988
Author:     Dag-Erling Smørgrav <d...@freebsd.org>
AuthorDate: 2025-08-17 17:08:10 +0000
Commit:     Dag-Erling Smørgrav <d...@freebsd.org>
CommitDate: 2025-08-17 17:29:27 +0000

    vfs: Introduce VN_ISDEV() macro
    
    We frequently need to check if a vnode refers to either a character or
    block special, so we might as well have a macro for it.
    
    We somewhat less frequently need to perform similar checks on things
    that aren't vnodes (usually a struct vattr *), so add VATTR_ISDEV()
    and a generic VTYPE_ISDEV() as well.
    
    Sponsored by:   Klara, Inc.
    Sponsored by:   NetApp, Inc.
    Reviewed by:    kib
    Differential Revision:  https://reviews.freebsd.org/D51947
---
 lib/libprocstat/libprocstat.c  |  3 +--
 sys/fs/cd9660/cd9660_vnops.c   | 12 ++++++------
 sys/fs/ext2fs/ext2_vnops.c     | 14 +++++++-------
 sys/fs/fuse/fuse_vnops.c       |  2 +-
 sys/fs/nfsclient/nfs_clvnops.c |  2 +-
 sys/fs/p9fs/p9fs_vnops.c       |  2 +-
 sys/fs/tarfs/tarfs_vnops.c     |  5 ++---
 sys/fs/tmpfs/tmpfs_subr.c      |  2 +-
 sys/fs/tmpfs/tmpfs_vnops.c     | 17 +++++++----------
 sys/kern/vfs_bio.c             |  2 +-
 sys/kern/vfs_syscalls.c        |  2 +-
 sys/sys/param.h                |  2 +-
 sys/sys/vnode.h                |  9 +++++++++
 sys/ufs/ffs/ffs_vnops.c        | 12 ++++++------
 sys/ufs/ufs/ufs_vnops.c        | 16 ++++++----------
 sys/vm/vnode_pager.c           |  3 +--
 16 files changed, 52 insertions(+), 53 deletions(-)

diff --git a/lib/libprocstat/libprocstat.c b/lib/libprocstat/libprocstat.c
index eb8137f6c76f..1651cbc6820f 100644
--- a/lib/libprocstat/libprocstat.c
+++ b/lib/libprocstat/libprocstat.c
@@ -1330,8 +1330,7 @@ procstat_get_vnode_info_kvm(kvm_t *kd, struct filestat 
*fst,
                return (1);
        }
        vn->vn_mntdir = getmnton(kd, vnode.v_mount);
-       if ((vnode.v_type == VBLK || vnode.v_type == VCHR) &&
-           vnode.v_rdev != NULL){
+       if (VTYPE_ISDEV(vnode.v_type) && vnode.v_rdev != NULL) {
                vn->vn_dev = dev2udev(kd, vnode.v_rdev);
                (void)kdevtoname(kd, vnode.v_rdev, vn->vn_devname);
        } else {
diff --git a/sys/fs/cd9660/cd9660_vnops.c b/sys/fs/cd9660/cd9660_vnops.c
index c4d0e6ba7b30..a496b41fcf6e 100644
--- a/sys/fs/cd9660/cd9660_vnops.c
+++ b/sys/fs/cd9660/cd9660_vnops.c
@@ -124,7 +124,7 @@ cd9660_access(struct vop_access_args *ap)
        uid_t uid;
        gid_t gid;
 
-       if (vp->v_type == VCHR || vp->v_type == VBLK)
+       if (VN_ISDEV(vp))
                return (EOPNOTSUPP);
 
        /*
@@ -162,7 +162,7 @@ cd9660_open(struct vop_open_args *ap)
        struct vnode *vp = ap->a_vp;
        struct iso_node *ip = VTOI(vp);
 
-       if (vp->v_type == VCHR || vp->v_type == VBLK)
+       if (VN_ISDEV(vp))
                return (EOPNOTSUPP);
 
        vnode_create_vobject(vp, ip->i_size, ap->a_td);
@@ -242,7 +242,7 @@ cd9660_ioctl(struct vop_ioctl_args *ap)
                VOP_UNLOCK(vp);
                return (EBADF);
        }
-       if (vp->v_type == VCHR || vp->v_type == VBLK) {
+       if (VN_ISDEV(vp)) {
                VOP_UNLOCK(vp);
                return (EOPNOTSUPP);
        }
@@ -280,7 +280,7 @@ cd9660_read(struct vop_read_args *ap)
        int seqcount;
        long size, n, on;
 
-       if (vp->v_type == VCHR || vp->v_type == VBLK)
+       if (VN_ISDEV(vp))
                return (EOPNOTSUPP);
 
        seqcount = ap->a_ioflag >> IO_SEQSHIFT;
@@ -711,7 +711,7 @@ cd9660_strategy(struct vop_strategy_args *ap)
        struct bufobj *bo;
 
        ip = VTOI(vp);
-       if (vp->v_type == VBLK || vp->v_type == VCHR)
+       if (VN_ISDEV(vp))
                panic("cd9660_strategy: spec");
        if (bp->b_blkno == bp->b_lblkno) {
                bp->b_blkno = (ip->iso_start + bp->b_lblkno) <<
@@ -818,7 +818,7 @@ cd9660_getpages(struct vop_getpages_args *ap)
        struct vnode *vp;
 
        vp = ap->a_vp;
-       if (vp->v_type == VCHR || vp->v_type == VBLK)
+       if (VN_ISDEV(vp))
                return (EOPNOTSUPP);
 
        if (use_buf_pager)
diff --git a/sys/fs/ext2fs/ext2_vnops.c b/sys/fs/ext2fs/ext2_vnops.c
index 064c10bd18b2..669b510cf8ac 100644
--- a/sys/fs/ext2fs/ext2_vnops.c
+++ b/sys/fs/ext2fs/ext2_vnops.c
@@ -222,7 +222,7 @@ ext2_itimes_locked(struct vnode *vp)
        ip = VTOI(vp);
        if ((ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_UPDATE)) == 0)
                return;
-       if ((vp->v_type == VBLK || vp->v_type == VCHR))
+       if (VN_ISDEV(vp))
                ip->i_flag |= IN_LAZYMOD;
        else
                ip->i_flag |= IN_MODIFIED;
@@ -276,7 +276,7 @@ static int
 ext2_open(struct vop_open_args *ap)
 {
 
-       if (ap->a_vp->v_type == VBLK || ap->a_vp->v_type == VCHR)
+       if (VN_ISDEV(ap->a_vp))
                return (EOPNOTSUPP);
 
        /*
@@ -1571,7 +1571,7 @@ ext2_strategy(struct vop_strategy_args *ap)
        daddr_t blkno;
        int error;
 
-       if (vp->v_type == VBLK || vp->v_type == VCHR)
+       if (VN_ISDEV(vp))
                panic("ext2_strategy: spec");
        if (bp->b_blkno == bp->b_lblkno) {
                if (VTOI(ap->a_vp)->i_flag & IN_E4EXTENTS)
@@ -1733,7 +1733,7 @@ ext2_deleteextattr(struct vop_deleteextattr_args *ap)
        if (!EXT2_HAS_COMPAT_FEATURE(ip->i_e2fs, EXT2F_COMPAT_EXT_ATTR))
                return (EOPNOTSUPP);
 
-       if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK)
+       if (VN_ISDEV(ap->a_vp))
                return (EOPNOTSUPP);
 
        error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace,
@@ -1771,7 +1771,7 @@ ext2_getextattr(struct vop_getextattr_args *ap)
        if (!EXT2_HAS_COMPAT_FEATURE(ip->i_e2fs, EXT2F_COMPAT_EXT_ATTR))
                return (EOPNOTSUPP);
 
-       if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK)
+       if (VN_ISDEV(ap->a_vp))
                return (EOPNOTSUPP);
 
        error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace,
@@ -1814,7 +1814,7 @@ ext2_listextattr(struct vop_listextattr_args *ap)
        if (!EXT2_HAS_COMPAT_FEATURE(ip->i_e2fs, EXT2F_COMPAT_EXT_ATTR))
                return (EOPNOTSUPP);
 
-       if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK)
+       if (VN_ISDEV(ap->a_vp))
                return (EOPNOTSUPP);
 
        error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace,
@@ -1855,7 +1855,7 @@ ext2_setextattr(struct vop_setextattr_args *ap)
        if (!EXT2_HAS_COMPAT_FEATURE(ip->i_e2fs, EXT2F_COMPAT_EXT_ATTR))
                return (EOPNOTSUPP);
 
-       if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK)
+       if (VN_ISDEV(ap->a_vp))
                return (EOPNOTSUPP);
 
        error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace,
diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c
index b782146b7278..de60a4717dd4 100644
--- a/sys/fs/fuse/fuse_vnops.c
+++ b/sys/fs/fuse/fuse_vnops.c
@@ -1748,7 +1748,7 @@ fuse_vnop_open(struct vop_open_args *ap)
        if (fuse_isdeadfs(vp))
                return (EXTERROR(ENXIO, "This FUSE session is about "
                    "to be closed"));
-       if (vp->v_type == VCHR || vp->v_type == VBLK || vp->v_type == VFIFO)
+       if (VN_ISDEV(vp) || vp->v_type == VFIFO)
                return (EXTERROR(EOPNOTSUPP, "Unsupported vnode type",
                    vp->v_type));
        if ((a_mode & (FREAD | FWRITE | FEXEC)) == 0)
diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c
index 6824ee6ef13d..52f72dc43c3f 100644
--- a/sys/fs/nfsclient/nfs_clvnops.c
+++ b/sys/fs/nfsclient/nfs_clvnops.c
@@ -1782,7 +1782,7 @@ nfs_mknodrpc(struct vnode *dvp, struct vnode **vpp, 
struct componentname *cnp,
        int error = 0, attrflag, dattrflag;
        u_int32_t rdev;
 
-       if (vap->va_type == VCHR || vap->va_type == VBLK)
+       if (VATTR_ISDEV(vap))
                rdev = vap->va_rdev;
        else if (vap->va_type == VFIFO || vap->va_type == VSOCK)
                rdev = 0xffffffff;
diff --git a/sys/fs/p9fs/p9fs_vnops.c b/sys/fs/p9fs/p9fs_vnops.c
index 227e2b93883e..acb73973d93b 100644
--- a/sys/fs/p9fs/p9fs_vnops.c
+++ b/sys/fs/p9fs/p9fs_vnops.c
@@ -1326,7 +1326,7 @@ p9fs_read(struct vop_read_args *ap)
        np = P9FS_VTON(vp);
        error = 0;
 
-       if (vp->v_type == VCHR || vp->v_type == VBLK)
+       if (VN_ISDEV(vp))
                return (EOPNOTSUPP);
        if (vp->v_type != VREG)
                return (EISDIR);
diff --git a/sys/fs/tarfs/tarfs_vnops.c b/sys/fs/tarfs/tarfs_vnops.c
index afb8e05f5929..acf18de5ab51 100644
--- a/sys/fs/tarfs/tarfs_vnops.c
+++ b/sys/fs/tarfs/tarfs_vnops.c
@@ -208,8 +208,7 @@ tarfs_getattr(struct vop_getattr_args *ap)
        vap->va_birthtime = tnp->birthtime;
        vap->va_gen = tnp->gen;
        vap->va_flags = tnp->flags;
-       vap->va_rdev = (vp->v_type == VBLK || vp->v_type == VCHR) ?
-           tnp->rdev : NODEV;
+       vap->va_rdev = VN_ISDEV(vp) ? tnp->rdev : NODEV;
        vap->va_bytes = round_page(tnp->physize);
        vap->va_filerev = 0;
 
@@ -515,7 +514,7 @@ tarfs_read(struct vop_read_args *ap)
        uiop = ap->a_uio;
        vp = ap->a_vp;
 
-       if (vp->v_type == VCHR || vp->v_type == VBLK)
+       if (VN_ISDEV(vp))
                return (EOPNOTSUPP);
 
        if (vp->v_type != VREG)
diff --git a/sys/fs/tmpfs/tmpfs_subr.c b/sys/fs/tmpfs/tmpfs_subr.c
index 1237f6b92cdb..dd281d18d87d 100644
--- a/sys/fs/tmpfs/tmpfs_subr.c
+++ b/sys/fs/tmpfs/tmpfs_subr.c
@@ -551,7 +551,7 @@ tmpfs_alloc_node(struct mount *mp, struct tmpfs_mount *tmp, 
__enum_uint8(vtype)
        MPASS(IMPLIES(tmp->tm_root == NULL, parent == NULL && type == VDIR));
 
        MPASS((type == VLNK) ^ (target == NULL));
-       MPASS((type == VBLK || type == VCHR) ^ (rdev == VNOVAL));
+       MPASS(VTYPE_ISDEV(type) ^ (rdev == VNOVAL));
 
        if (tmp->tm_nodes_inuse >= tmp->tm_nodes_max)
                return (ENOSPC);
diff --git a/sys/fs/tmpfs/tmpfs_vnops.c b/sys/fs/tmpfs/tmpfs_vnops.c
index 79b6c8b2e6a1..0f4ea2fdc28c 100644
--- a/sys/fs/tmpfs/tmpfs_vnops.c
+++ b/sys/fs/tmpfs/tmpfs_vnops.c
@@ -280,8 +280,7 @@ tmpfs_mknod(struct vop_mknod_args *v)
        struct componentname *cnp = v->a_cnp;
        struct vattr *vap = v->a_vap;
 
-       if (vap->va_type != VBLK && vap->va_type != VCHR &&
-           vap->va_type != VFIFO)
+       if (!VATTR_ISDEV(vap) && vap->va_type != VFIFO)
                return (EINVAL);
 
        return (tmpfs_alloc_file(dvp, vpp, vap, cnp, NULL));
@@ -462,8 +461,7 @@ tmpfs_stat(struct vop_stat_args *v)
        sb->st_nlink = node->tn_links;
        sb->st_uid = node->tn_uid;
        sb->st_gid = node->tn_gid;
-       sb->st_rdev = (vp->v_type == VBLK || vp->v_type == VCHR) ?
-               node->tn_rdev : NODEV;
+       sb->st_rdev = VN_ISDEV(vp) ? node->tn_rdev : NODEV;
        sb->st_size = node->tn_size;
        sb->st_atim.tv_sec = node->tn_atime.tv_sec;
        sb->st_atim.tv_nsec = node->tn_atime.tv_nsec;
@@ -521,8 +519,7 @@ tmpfs_getattr(struct vop_getattr_args *v)
        vap->va_birthtime = node->tn_birthtime;
        vap->va_gen = node->tn_gen;
        vap->va_flags = node->tn_flags;
-       vap->va_rdev = (vp->v_type == VBLK || vp->v_type == VCHR) ?
-           node->tn_rdev : NODEV;
+       vap->va_rdev = VN_ISDEV(vp) ? node->tn_rdev : NODEV;
        if (vp->v_type == VREG) {
 #ifdef __ILP32__
                vm_object_t obj = node->tn_reg.tn_aobj;
@@ -1918,7 +1915,7 @@ tmpfs_deleteextattr(struct vop_deleteextattr_args *ap)
 
        node = VP_TO_TMPFS_NODE(vp);
        tmp = VFS_TO_TMPFS(vp->v_mount);
-       if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK)
+       if (VN_ISDEV(ap->a_vp))
                return (EOPNOTSUPP);
        error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace,
            ap->a_cred, ap->a_td, VWRITE);
@@ -1956,7 +1953,7 @@ tmpfs_getextattr(struct vop_getextattr_args *ap)
        int error;
 
        node = VP_TO_TMPFS_NODE(vp);
-       if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK)
+       if (VN_ISDEV(ap->a_vp))
                return (EOPNOTSUPP);
        error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace,
            ap->a_cred, ap->a_td, VREAD);
@@ -1993,7 +1990,7 @@ tmpfs_listextattr(struct vop_listextattr_args *ap)
        int error;
 
        node = VP_TO_TMPFS_NODE(vp);
-       if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK)
+       if (VN_ISDEV(ap->a_vp))
                return (EOPNOTSUPP);
        error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace,
            ap->a_cred, ap->a_td, VREAD);
@@ -2037,7 +2034,7 @@ tmpfs_setextattr(struct vop_setextattr_args *ap)
        tmp = VFS_TO_TMPFS(vp->v_mount);
        attr_size = ap->a_uio->uio_resid;
        diff = 0;
-       if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK)
+       if (VN_ISDEV(ap->a_vp))
                return (EOPNOTSUPP);
        error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace,
            ap->a_cred, ap->a_td, VWRITE);
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
index fa655c43d155..19c39e42bafa 100644
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -5170,7 +5170,7 @@ bufstrategy(struct bufobj *bo, struct buf *bp)
 
        vp = bp->b_vp;
        KASSERT(vp == bo->bo_private, ("Inconsistent vnode bufstrategy"));
-       KASSERT(vp->v_type != VCHR && vp->v_type != VBLK,
+       KASSERT(!VN_ISDEV(vp),
            ("Wrong vnode in bufstrategy(bp=%p, vp=%p)", bp, vp));
        i = VOP_STRATEGY(vp, bp);
        KASSERT(i == 0, ("VOP_STRATEGY failed bp=%p vp=%p", bp, bp->b_vp));
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index b805e147bd62..bf3ed9d515dc 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -2839,7 +2839,7 @@ setfflags(struct thread *td, struct vnode *vp, u_long 
flags)
         * if they are allowed to set flags and programs assume that
         * chown can't fail when done as root.
         */
-       if (vp->v_type == VCHR || vp->v_type == VBLK) {
+       if (VN_ISDEV(vp)) {
                error = priv_check(td, PRIV_VFS_CHFLAGS_DEV);
                if (error != 0)
                        return (error);
diff --git a/sys/sys/param.h b/sys/sys/param.h
index 89ab2b2b0ea8..915bfe1abfcd 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -74,7 +74,7 @@
  * cannot include sys/param.h and should only be updated here.
  */
 #undef __FreeBSD_version
-#define __FreeBSD_version 1500061
+#define __FreeBSD_version 1500062
 
 /*
  * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h
index 074769d55c2d..6ef9bbec9446 100644
--- a/sys/sys/vnode.h
+++ b/sys/sys/vnode.h
@@ -67,6 +67,11 @@ __enum_uint8_decl(vtype) {
        VLASTTYPE = VMARKER,
 };
 
+/*
+ * We frequently need to test is something is a device node.
+ */
+#define VTYPE_ISDEV(vtype)     ((vtype) == VCHR || (vtype) == VBLK)
+
 __enum_uint8_decl(vstate) {
        VSTATE_UNINITIALIZED,
        VSTATE_CONSTRUCTED,
@@ -199,6 +204,8 @@ struct vnode {
        int     v_seqc_users;                   /* i modifications pending */
 };
 
+#define VN_ISDEV(vp)           VTYPE_ISDEV((vp)->v_type)
+
 #ifndef DEBUG_LOCKS
 #ifdef _LP64
 /*
@@ -309,6 +316,8 @@ struct vattr {
        long            va_spare;       /* remain quad aligned */
 };
 
+#define VATTR_ISDEV(vap)       VTYPE_ISDEV((vap)->va_type)
+
 /*
  * Flags for va_vaflags.
  */
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index 897a21032907..c7e2b3f4b8e6 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -1550,7 +1550,7 @@ ffs_openextattr(
        } */ *ap)
 {
 
-       if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK)
+       if (VN_ISDEV(ap->a_vp))
                return (EOPNOTSUPP);
 
        return (ffs_open_ea(ap->a_vp, ap->a_cred, ap->a_td));
@@ -1572,7 +1572,7 @@ ffs_closeextattr(
        struct vnode *vp;
 
        vp = ap->a_vp;
-       if (vp->v_type == VCHR || vp->v_type == VBLK)
+       if (VN_ISDEV(vp))
                return (EOPNOTSUPP);
        if (ap->a_commit && (vp->v_mount->mnt_flag & MNT_RDONLY) != 0)
                return (EROFS);
@@ -1610,7 +1610,7 @@ ffs_deleteextattr(
        vp = ap->a_vp;
        ip = VTOI(vp);
 
-       if (vp->v_type == VCHR || vp->v_type == VBLK)
+       if (VN_ISDEV(vp))
                return (EOPNOTSUPP);
        if (strlen(ap->a_name) == 0)
                return (EINVAL);
@@ -1688,7 +1688,7 @@ ffs_getextattr(
 
        ip = VTOI(ap->a_vp);
 
-       if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK)
+       if (VN_ISDEV(ap->a_vp))
                return (EOPNOTSUPP);
 
        error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace,
@@ -1738,7 +1738,7 @@ ffs_listextattr(
 
        ip = VTOI(ap->a_vp);
 
-       if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK)
+       if (VN_ISDEV(ap->a_vp))
                return (EOPNOTSUPP);
 
        error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace,
@@ -1803,7 +1803,7 @@ ffs_setextattr(
        ip = VTOI(vp);
        fs = ITOFS(ip);
 
-       if (vp->v_type == VCHR || vp->v_type == VBLK)
+       if (VN_ISDEV(vp))
                return (EOPNOTSUPP);
        if (strlen(ap->a_name) == 0)
                return (EINVAL);
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c
index 24dd51bcaef1..0921eee92b9d 100644
--- a/sys/ufs/ufs/ufs_vnops.c
+++ b/sys/ufs/ufs/ufs_vnops.c
@@ -156,7 +156,7 @@ ufs_itimes_locked(struct vnode *vp)
        if ((ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_UPDATE)) == 0)
                return;
 
-       if ((vp->v_type == VBLK || vp->v_type == VCHR) && !DOINGSOFTDEP(vp))
+       if (VN_ISDEV(vp) && !DOINGSOFTDEP(vp))
                UFS_INODE_SET_FLAG(ip, IN_LAZYMOD);
        else if (((vp->v_mount->mnt_kern_flag &
            (MNTK_SUSPENDED | MNTK_SUSPEND)) == 0) ||
@@ -319,7 +319,7 @@ ufs_open(struct vop_open_args *ap)
        struct vnode *vp = ap->a_vp;
        struct inode *ip;
 
-       if (vp->v_type == VCHR || vp->v_type == VBLK)
+       if (VN_ISDEV(vp))
                return (EOPNOTSUPP);
 
        ip = VTOI(vp);
@@ -540,8 +540,7 @@ ufs_stat(struct vop_stat_args *ap)
        sb->st_uid = ip->i_uid;
        sb->st_gid = ip->i_gid;
        if (I_IS_UFS1(ip)) {
-               sb->st_rdev = (vp->v_type == VBLK || vp->v_type == VCHR) ?
-                   ip->i_din1->di_rdev : NODEV;
+               sb->st_rdev = VN_ISDEV(vp) ? ip->i_din1->di_rdev : NODEV;
                sb->st_size = ip->i_din1->di_size;
                sb->st_mtim.tv_sec = ip->i_din1->di_mtime;
                sb->st_mtim.tv_nsec = ip->i_din1->di_mtimensec;
@@ -552,8 +551,7 @@ ufs_stat(struct vop_stat_args *ap)
                sb->st_blocks = dbtob((uint64_t)ip->i_din1->di_blocks) / 
S_BLKSIZE;
                sb->st_filerev = ip->i_din1->di_modrev;
        } else {
-               sb->st_rdev = (vp->v_type == VBLK || vp->v_type == VCHR) ?
-                   ip->i_din2->di_rdev : NODEV;
+               sb->st_rdev = VN_ISDEV(vp) ? ip->i_din2->di_rdev : NODEV;
                sb->st_size = ip->i_din2->di_size;
                sb->st_mtim.tv_sec = ip->i_din2->di_mtime;
                sb->st_mtim.tv_nsec = ip->i_din2->di_mtimensec;
@@ -605,8 +603,7 @@ ufs_getattr(
        vap->va_uid = ip->i_uid;
        vap->va_gid = ip->i_gid;
        if (I_IS_UFS1(ip)) {
-               vap->va_rdev = (vp->v_type == VBLK || vp->v_type == VCHR) ?
-                   ip->i_din1->di_rdev : NODEV;
+               vap->va_rdev = VN_ISDEV(vp) ? ip->i_din1->di_rdev : NODEV;
                vap->va_size = ip->i_din1->di_size;
                vap->va_mtime.tv_sec = ip->i_din1->di_mtime;
                vap->va_mtime.tv_nsec = ip->i_din1->di_mtimensec;
@@ -615,8 +612,7 @@ ufs_getattr(
                vap->va_bytes = dbtob((uint64_t)ip->i_din1->di_blocks);
                vap->va_filerev = ip->i_din1->di_modrev;
        } else {
-               vap->va_rdev = (vp->v_type == VBLK || vp->v_type == VCHR) ?
-                   ip->i_din2->di_rdev : NODEV;
+               vap->va_rdev = VN_ISDEV(vp) ? ip->i_din2->di_rdev : NODEV;
                vap->va_size = ip->i_din2->di_size;
                vap->va_mtime.tv_sec = ip->i_din2->di_mtime;
                vap->va_mtime.tv_nsec = ip->i_din2->di_mtimensec;
diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c
index de8a6c52c08f..244aa31ea703 100644
--- a/sys/vm/vnode_pager.c
+++ b/sys/vm/vnode_pager.c
@@ -901,8 +901,7 @@ vnode_pager_generic_getpages(struct vnode *vp, vm_page_t 
*m, int count,
        int error, before, after, rbehind, rahead, poff, i;
        int bytecount, secmask;
 
-       KASSERT(vp->v_type != VCHR && vp->v_type != VBLK,
-           ("%s does not support devices", __func__));
+       KASSERT(!VN_ISDEV(vp), ("%s does not support devices", __func__));
 
        if (VN_IS_DOOMED(vp))
                return (VM_PAGER_BAD);

Reply via email to