summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1999-11-22 10:33:55 +0000
committerphk <phk@FreeBSD.org>1999-11-22 10:33:55 +0000
commit1848d96439c3eae03af8c379d699cf530ec39611 (patch)
tree0dd64726856780468e173aa94cbba55946f1b4cf /sys
parent9fac48d9a6cd7258b469d97bb694c7e34d7d8e39 (diff)
downloadFreeBSD-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.c8
-rw-r--r--sys/dev/ccd/ccd.c13
-rw-r--r--sys/geom/geom_ccd.c13
-rw-r--r--sys/kern/vfs_aio.c5
-rw-r--r--sys/kern/vfs_bio.c8
-rw-r--r--sys/kern/vfs_export.c7
-rw-r--r--sys/kern/vfs_subr.c7
-rw-r--r--sys/ufs/ffs/ffs_softdep.c8
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c4
-rw-r--r--sys/ufs/ffs/ffs_vnops.c4
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
}
OpenPOWER on IntegriCloud