summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2004-10-28 08:22:11 +0000
committerphk <phk@FreeBSD.org>2004-10-28 08:22:11 +0000
commit5a159b2d78bc926a669b419529f653f247d76c37 (patch)
tree4a7711bf04f91afe22f3c0e73715372fcbc17238 /sys
parent414fca23b7b98deea47ad5b2ae0370a93f2d6f05 (diff)
downloadFreeBSD-src-5a159b2d78bc926a669b419529f653f247d76c37.zip
FreeBSD-src-5a159b2d78bc926a669b419529f653f247d76c37.tar.gz
Reduce the locking activity by epsilon by checking VNON condition before
releasing the mountlock.
Diffstat (limited to 'sys')
-rw-r--r--sys/fs/msdosfs/msdosfs_vfsops.c7
-rw-r--r--sys/gnu/ext2fs/ext2_vfsops.c7
-rw-r--r--sys/gnu/fs/ext2fs/ext2_vfsops.c7
3 files changed, 9 insertions, 12 deletions
diff --git a/sys/fs/msdosfs/msdosfs_vfsops.c b/sys/fs/msdosfs/msdosfs_vfsops.c
index 2f7695a..089118d 100644
--- a/sys/fs/msdosfs/msdosfs_vfsops.c
+++ b/sys/fs/msdosfs/msdosfs_vfsops.c
@@ -845,17 +845,16 @@ msdosfs_sync(mp, waitfor, cred, td)
loop:
MNT_VNODE_FOREACH(vp, mp, nvp) {
VI_LOCK(vp);
- if (vp->v_iflag & VI_XLOCK) {
+ if (vp->v_type == VNON || (vp->v_iflag & VI_XLOCK)) {
VI_UNLOCK(vp);
continue;
}
MNT_IUNLOCK(mp);
dep = VTODE(vp);
- if (vp->v_type == VNON ||
- ((dep->de_flag &
+ if ((dep->de_flag &
(DE_ACCESS | DE_CREATE | DE_UPDATE | DE_MODIFIED)) == 0 &&
(vp->v_bufobj.bo_dirty.bv_cnt == 0 ||
- waitfor == MNT_LAZY))) {
+ waitfor == MNT_LAZY)) {
VI_UNLOCK(vp);
MNT_ILOCK(mp);
continue;
diff --git a/sys/gnu/ext2fs/ext2_vfsops.c b/sys/gnu/ext2fs/ext2_vfsops.c
index 292f20e..f8ba411 100644
--- a/sys/gnu/ext2fs/ext2_vfsops.c
+++ b/sys/gnu/ext2fs/ext2_vfsops.c
@@ -922,17 +922,16 @@ ext2_sync(mp, waitfor, cred, td)
loop:
MNT_VNODE_FOREACH(vp, mp, nvp) {
VI_LOCK(vp);
- if (vp->v_iflag & VI_XLOCK) {
+ if (vp->v_type == VNON || (vp->v_iflag & VI_XLOCK)) {
VI_UNLOCK(vp);
continue;
}
MNT_IUNLOCK(mp);
ip = VTOI(vp);
- if (vp->v_type == VNON ||
- ((ip->i_flag &
+ if ((ip->i_flag &
(IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) == 0 &&
(vp->v_bufobj.bo_dirty.bv_cnt == 0 ||
- waitfor == MNT_LAZY))) {
+ waitfor == MNT_LAZY)) {
VI_UNLOCK(vp);
MNT_ILOCK(mp);
continue;
diff --git a/sys/gnu/fs/ext2fs/ext2_vfsops.c b/sys/gnu/fs/ext2fs/ext2_vfsops.c
index 292f20e..f8ba411 100644
--- a/sys/gnu/fs/ext2fs/ext2_vfsops.c
+++ b/sys/gnu/fs/ext2fs/ext2_vfsops.c
@@ -922,17 +922,16 @@ ext2_sync(mp, waitfor, cred, td)
loop:
MNT_VNODE_FOREACH(vp, mp, nvp) {
VI_LOCK(vp);
- if (vp->v_iflag & VI_XLOCK) {
+ if (vp->v_type == VNON || (vp->v_iflag & VI_XLOCK)) {
VI_UNLOCK(vp);
continue;
}
MNT_IUNLOCK(mp);
ip = VTOI(vp);
- if (vp->v_type == VNON ||
- ((ip->i_flag &
+ if ((ip->i_flag &
(IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) == 0 &&
(vp->v_bufobj.bo_dirty.bv_cnt == 0 ||
- waitfor == MNT_LAZY))) {
+ waitfor == MNT_LAZY)) {
VI_UNLOCK(vp);
MNT_ILOCK(mp);
continue;
OpenPOWER on IntegriCloud