diff options
author | phk <phk@FreeBSD.org> | 1999-11-22 10:33:55 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 1999-11-22 10:33:55 +0000 |
commit | 1848d96439c3eae03af8c379d699cf530ec39611 (patch) | |
tree | 0dd64726856780468e173aa94cbba55946f1b4cf /sys | |
parent | 9fac48d9a6cd7258b469d97bb694c7e34d7d8e39 (diff) | |
download | FreeBSD-src-1848d96439c3eae03af8c379d699cf530ec39611.zip FreeBSD-src-1848d96439c3eae03af8c379d699cf530ec39611.tar.gz |
Convert various pieces of code to use vn_isdisk() rather than checking
for vp->v_type == VBLK.
In ccd: we don't need to call VOP_GETATTR to find the type of a vnode.
Reviewed by: sos
Diffstat (limited to 'sys')
-rw-r--r-- | sys/contrib/softupdates/ffs_softdep.c | 8 | ||||
-rw-r--r-- | sys/dev/ccd/ccd.c | 13 | ||||
-rw-r--r-- | sys/geom/geom_ccd.c | 13 | ||||
-rw-r--r-- | sys/kern/vfs_aio.c | 5 | ||||
-rw-r--r-- | sys/kern/vfs_bio.c | 8 | ||||
-rw-r--r-- | sys/kern/vfs_export.c | 7 | ||||
-rw-r--r-- | sys/kern/vfs_subr.c | 7 | ||||
-rw-r--r-- | sys/ufs/ffs/ffs_softdep.c | 8 | ||||
-rw-r--r-- | sys/ufs/ffs/ffs_vfsops.c | 4 | ||||
-rw-r--r-- | sys/ufs/ffs/ffs_vnops.c | 4 |
10 files changed, 27 insertions, 50 deletions
diff --git a/sys/contrib/softupdates/ffs_softdep.c b/sys/contrib/softupdates/ffs_softdep.c index 5d7f766..79a1aee 100644 --- a/sys/contrib/softupdates/ffs_softdep.c +++ b/sys/contrib/softupdates/ffs_softdep.c @@ -3691,8 +3691,8 @@ softdep_fsync_mountdev(vp) struct buf *bp, *nbp; struct worklist *wk; - if (vp->v_type != VBLK) - panic("softdep_fsync_mountdev: vnode not VBLK"); + if (!vn_isdisk(vp)) + panic("softdep_fsync_mountdev: vnode not a disk"); ACQUIRE_LOCK(&lk); for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) { nbp = TAILQ_NEXT(bp, b_vnbufs); @@ -3753,7 +3753,7 @@ softdep_sync_metadata(ap) * Check whether this vnode is involved in a filesystem * that is doing soft dependency processing. */ - if (vp->v_type != VBLK) { + if (!vn_isdisk(vp)) { if (!DOINGSOFTDEP(vp)) return (0); } else @@ -3978,7 +3978,7 @@ loop: * way to accomplish this is to sync the entire filesystem (luckily * this happens rarely). */ - if (vp->v_type == VBLK && vp->v_specmountpoint && !VOP_ISLOCKED(vp) && + if (vn_isdisk(vp) && vp->v_specmountpoint && !VOP_ISLOCKED(vp) && (error = VFS_SYNC(vp->v_specmountpoint, MNT_WAIT, ap->a_cred, ap->a_p)) != 0) return (error); diff --git a/sys/dev/ccd/ccd.c b/sys/dev/ccd/ccd.c index 75ee082..fcca237 100644 --- a/sys/dev/ccd/ccd.c +++ b/sys/dev/ccd/ccd.c @@ -1603,18 +1603,7 @@ ccdlookup(path, p, vpp) return (EBUSY); } - if ((error = VOP_GETATTR(vp, &va, p->p_ucred, p)) != 0) { -#ifdef DEBUG - if (ccddebug & CCDB_FOLLOW|CCDB_INIT) - printf("ccdlookup: getattr error = %d\n", error); -#endif - VOP_UNLOCK(vp, 0, p); - (void)vn_close(vp, FREAD|FWRITE, p->p_ucred, p); - return (error); - } - - /* XXX: eventually we should handle VREG, too. */ - if (va.va_type != VBLK) { + if (!vn_isdisk(vp)) { VOP_UNLOCK(vp, 0, p); (void)vn_close(vp, FREAD|FWRITE, p->p_ucred, p); return (ENOTBLK); diff --git a/sys/geom/geom_ccd.c b/sys/geom/geom_ccd.c index 75ee082..fcca237 100644 --- a/sys/geom/geom_ccd.c +++ b/sys/geom/geom_ccd.c @@ -1603,18 +1603,7 @@ ccdlookup(path, p, vpp) return (EBUSY); } - if ((error = VOP_GETATTR(vp, &va, p->p_ucred, p)) != 0) { -#ifdef DEBUG - if (ccddebug & CCDB_FOLLOW|CCDB_INIT) - printf("ccdlookup: getattr error = %d\n", error); -#endif - VOP_UNLOCK(vp, 0, p); - (void)vn_close(vp, FREAD|FWRITE, p->p_ucred, p); - return (error); - } - - /* XXX: eventually we should handle VREG, too. */ - if (va.va_type != VBLK) { + if (!vn_isdisk(vp)) { VOP_UNLOCK(vp, 0, p); (void)vn_close(vp, FREAD|FWRITE, p->p_ucred, p); return (ENOTBLK); diff --git a/sys/kern/vfs_aio.c b/sys/kern/vfs_aio.c index 8308caf..fd632a9 100644 --- a/sys/kern/vfs_aio.c +++ b/sys/kern/vfs_aio.c @@ -934,10 +934,7 @@ aio_qphysio(p, aiocbe) vp = (struct vnode *)fp->f_data; - /* XXX: use vn_isdisk() when VBLK and VCHR are unified */ - if (vp->v_type != VCHR) - return (-1); - if (!(devsw(vp->v_rdev)->d_flags & D_DISK)) + if (!vn_isdisk(vp)) return (-1); if (cb->aio_nbytes % vp->v_rdev->si_bsize_phys) diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index af1d835..c3dc70e 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -624,7 +624,7 @@ bwrite(struct buf * bp) * filesystem (if any). */ if ((vp = bp->b_vp) != NULL) { - if (vp->v_type == VBLK) + if (vn_isdisk(vp)) mp = vp->v_specmountpoint; else mp = vp->v_mount; @@ -915,7 +915,7 @@ brelse(struct buf * bp) */ if ((bp->b_flags & B_VMIO) && !(bp->b_vp->v_tag == VT_NFS && - bp->b_vp->v_type != VBLK && + !vn_isdisk(bp->b_vp) && (bp->b_flags & B_DELWRI)) ) { @@ -2103,7 +2103,7 @@ loop: int bsize, maxsize, vmio; off_t offset; - if (vp->v_type == VBLK) + if (vn_isdisk(vp)) bsize = DEV_BSIZE; else if (vp->v_mountedhere) bsize = vp->v_mountedhere->mnt_stat.f_iosize; @@ -2690,7 +2690,7 @@ biodone(register struct buf * bp) (int) m->pindex, (int)(foff >> 32), (int) foff & 0xffffffff, resid, i); #endif - if (vp->v_type != VBLK) + if (!vn_isdisk(vp)) #if !defined(MAX_PERF) printf(" iosize: %ld, lblkno: %d, flags: 0x%lx, npages: %d\n", bp->b_vp->v_mount->mnt_stat.f_iosize, diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c index fc850ff..1b0494e 100644 --- a/sys/kern/vfs_export.c +++ b/sys/kern/vfs_export.c @@ -1021,7 +1021,7 @@ sched_sync(void) * slot we are safe. */ if (TAILQ_EMPTY(&vp->v_dirtyblkhd) && - vp->v_type != VBLK) + !vn_isdisk(vp)) panic("sched_sync: fsync failed vp %p tag %d", vp, vp->v_tag); /* * Put us back on the worklist. The worklist @@ -1207,6 +1207,7 @@ reassignbuf(bp, newvp) case VDIR: delay = dirdelay; break; + case VCHR: case VBLK: if (newvp->v_specmountpoint != NULL) { delay = metadelay; @@ -2507,7 +2508,7 @@ vfs_object_create(vp, p, cred) vm_object_t object; int error = 0; - if (vp->v_type != VBLK && vn_canvmio(vp) == FALSE) + if (!vn_isdisk(vp) && vn_canvmio(vp) == FALSE) return 0; retry: @@ -2519,7 +2520,7 @@ retry: } else if (devsw(vp->v_rdev) != NULL) { /* * This simply allocates the biggest object possible - * for a VBLK vnode. This should be fixed, but doesn't + * for a disk vnode. This should be fixed, but doesn't * cause any problems (yet). */ object = vnode_pager_alloc(vp, IDX_TO_OFF(INT_MAX), 0, 0); diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index fc850ff..1b0494e 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -1021,7 +1021,7 @@ sched_sync(void) * slot we are safe. */ if (TAILQ_EMPTY(&vp->v_dirtyblkhd) && - vp->v_type != VBLK) + !vn_isdisk(vp)) panic("sched_sync: fsync failed vp %p tag %d", vp, vp->v_tag); /* * Put us back on the worklist. The worklist @@ -1207,6 +1207,7 @@ reassignbuf(bp, newvp) case VDIR: delay = dirdelay; break; + case VCHR: case VBLK: if (newvp->v_specmountpoint != NULL) { delay = metadelay; @@ -2507,7 +2508,7 @@ vfs_object_create(vp, p, cred) vm_object_t object; int error = 0; - if (vp->v_type != VBLK && vn_canvmio(vp) == FALSE) + if (!vn_isdisk(vp) && vn_canvmio(vp) == FALSE) return 0; retry: @@ -2519,7 +2520,7 @@ retry: } else if (devsw(vp->v_rdev) != NULL) { /* * This simply allocates the biggest object possible - * for a VBLK vnode. This should be fixed, but doesn't + * for a disk vnode. This should be fixed, but doesn't * cause any problems (yet). */ object = vnode_pager_alloc(vp, IDX_TO_OFF(INT_MAX), 0, 0); diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c index 5d7f766..79a1aee 100644 --- a/sys/ufs/ffs/ffs_softdep.c +++ b/sys/ufs/ffs/ffs_softdep.c @@ -3691,8 +3691,8 @@ softdep_fsync_mountdev(vp) struct buf *bp, *nbp; struct worklist *wk; - if (vp->v_type != VBLK) - panic("softdep_fsync_mountdev: vnode not VBLK"); + if (!vn_isdisk(vp)) + panic("softdep_fsync_mountdev: vnode not a disk"); ACQUIRE_LOCK(&lk); for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) { nbp = TAILQ_NEXT(bp, b_vnbufs); @@ -3753,7 +3753,7 @@ softdep_sync_metadata(ap) * Check whether this vnode is involved in a filesystem * that is doing soft dependency processing. */ - if (vp->v_type != VBLK) { + if (!vn_isdisk(vp)) { if (!DOINGSOFTDEP(vp)) return (0); } else @@ -3978,7 +3978,7 @@ loop: * way to accomplish this is to sync the entire filesystem (luckily * this happens rarely). */ - if (vp->v_type == VBLK && vp->v_specmountpoint && !VOP_ISLOCKED(vp) && + if (vn_isdisk(vp) && vp->v_specmountpoint && !VOP_ISLOCKED(vp) && (error = VFS_SYNC(vp->v_specmountpoint, MNT_WAIT, ap->a_cred, ap->a_p)) != 0) return (error); diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c index 827b1b6..3652f54 100644 --- a/sys/ufs/ffs/ffs_vfsops.c +++ b/sys/ufs/ffs/ffs_vfsops.c @@ -436,7 +436,7 @@ ffs_reload(mp, cred, p) * Only VMIO the backing device if the backing device is a real * block device. See ffs_mountmfs() for more details. */ - if (devvp->v_tag != VT_MFS && devvp->v_type == VBLK) { + if (devvp->v_tag != VT_MFS && vn_isdisk(devvp)) { vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p); vfs_object_create(devvp, p, p->p_ucred); simple_lock(&devvp->v_interlock); @@ -593,7 +593,7 @@ ffs_mountfs(devvp, mp, p, malloctype) * Note that it is optional that the backing device be VMIOed. This * increases the opportunity for metadata caching. */ - if (devvp->v_tag != VT_MFS && devvp->v_type == VBLK) { + if (devvp->v_tag != VT_MFS && vn_isdisk(devvp)) { vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p); vfs_object_create(devvp, p, p->p_ucred); simple_lock(&devvp->v_interlock); diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c index 25bea1f..eb99b2c 100644 --- a/sys/ufs/ffs/ffs_vnops.c +++ b/sys/ufs/ffs/ffs_vnops.c @@ -127,7 +127,7 @@ ffs_fsync(ap) daddr_t lbn; - if (vp->v_type == VBLK) { + if (vn_isdisk(vp)) { lbn = INT_MAX; if (vp->v_specmountpoint != NULL && (vp->v_specmountpoint->mnt_flag & MNT_SOFTDEP)) @@ -254,7 +254,7 @@ loop: goto loop; } #ifdef DIAGNOSTIC - if (vp->v_type != VBLK) + if (!vn_isdisk(vp)) vprint("ffs_fsync: dirty", vp); #endif } |