Module Name: src Committed By: christos Date: Thu Sep 1 09:04:09 UTC 2011
Modified Files: src/sys/kern: vfs_mount.c vfs_subr.c vfs_vnode.c Log Message: Check for v_type before v_rdev because it is cheaper and safer. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/kern/vfs_mount.c cvs rdiff -u -r1.424 -r1.425 src/sys/kern/vfs_subr.c cvs rdiff -u -r1.9 -r1.10 src/sys/kern/vfs_vnode.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/vfs_mount.c diff -u src/sys/kern/vfs_mount.c:1.6 src/sys/kern/vfs_mount.c:1.7 --- src/sys/kern/vfs_mount.c:1.6 Sat Jun 11 23:35:56 2011 +++ src/sys/kern/vfs_mount.c Thu Sep 1 05:04:08 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_mount.c,v 1.6 2011/06/12 03:35:56 rmind Exp $ */ +/* $NetBSD: vfs_mount.c,v 1.7 2011/09/01 09:04:08 christos Exp $ */ /*- * Copyright (c) 1997-2011 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vfs_mount.c,v 1.6 2011/06/12 03:35:56 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vfs_mount.c,v 1.7 2011/09/01 09:04:08 christos Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -1268,7 +1268,7 @@ mutex_enter(&device_lock); for (vq = specfs_hash[SPECHASH(vp->v_rdev)]; vq != NULL; vq = vq->v_specnext) { - if (vq->v_rdev != vp->v_rdev || vq->v_type != vp->v_type) + if (vq->v_type != vp->type || vq->v_rdev != vp->v_rdev) continue; if (vq->v_specmountpoint != NULL) { error = EBUSY; @@ -1295,7 +1295,6 @@ int d_type; bvp = NULL; - dev = vp->v_rdev; d_type = D_OTHER; if (iskmemvp(vp)) @@ -1305,6 +1304,7 @@ case VCHR: { const struct cdevsw *cdev; + dev = vp->v_rdev; cdev = cdevsw_lookup(dev); if (cdev != NULL) { dev_t blkdev; @@ -1325,6 +1325,7 @@ case VBLK: { const struct bdevsw *bdev; + dev = vp->v_rdev; bdev = bdevsw_lookup(dev); if (bdev != NULL) d_type = (bdev->d_flag & D_TYPEMASK); Index: src/sys/kern/vfs_subr.c diff -u src/sys/kern/vfs_subr.c:1.424 src/sys/kern/vfs_subr.c:1.425 --- src/sys/kern/vfs_subr.c:1.424 Mon Jul 11 04:27:37 2011 +++ src/sys/kern/vfs_subr.c Thu Sep 1 05:04:08 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_subr.c,v 1.424 2011/07/11 08:27:37 hannken Exp $ */ +/* $NetBSD: vfs_subr.c,v 1.425 2011/09/01 09:04:08 christos Exp $ */ /*- * Copyright (c) 1997, 1998, 2004, 2005, 2007, 2008 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.424 2011/07/11 08:27:37 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vfs_subr.c,v 1.425 2011/09/01 09:04:08 christos Exp $"); #include "opt_ddb.h" #include "opt_compat_netbsd.h" @@ -508,7 +508,7 @@ mutex_enter(&device_lock); for (vp = specfs_hash[SPECHASH(dev)]; vp; vp = vp->v_specnext) { - if (dev == vp->v_rdev && type == vp->v_type) + if (type == vp->v_type && dev == vp->v_rdev) break; } if (vp == NULL) { @@ -543,7 +543,7 @@ for (vp = *vpp; vp != NULL;) { mutex_enter(vp->v_interlock); if ((vp->v_iflag & VI_CLEAN) != 0 || - dev != vp->v_rdev || type != vp->v_type) { + type != vp->v_type || dev != vp->v_rdev) { mutex_exit(vp->v_interlock); vp = vp->v_specnext; continue; Index: src/sys/kern/vfs_vnode.c diff -u src/sys/kern/vfs_vnode.c:1.9 src/sys/kern/vfs_vnode.c:1.10 --- src/sys/kern/vfs_vnode.c:1.9 Sat Jun 11 23:35:57 2011 +++ src/sys/kern/vfs_vnode.c Thu Sep 1 05:04:08 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs_vnode.c,v 1.9 2011/06/12 03:35:57 rmind Exp $ */ +/* $NetBSD: vfs_vnode.c,v 1.10 2011/09/01 09:04:08 christos Exp $ */ /*- * Copyright (c) 1997-2011 The NetBSD Foundation, Inc. @@ -121,7 +121,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,v 1.9 2011/06/12 03:35:57 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vfs_vnode.c,v 1.10 2011/09/01 09:04:08 christos Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -1131,7 +1131,7 @@ /* If clean or being cleaned, then ignore it. */ mutex_enter(vq->v_interlock); if ((vq->v_iflag & (VI_CLEAN | VI_XLOCK)) != 0 || - vq->v_rdev != dev || vq->v_type != type) { + vq->v_type != type || vq->v_rdev != dev) { mutex_exit(vq->v_interlock); vq = vq->v_specnext; continue;