summaryrefslogtreecommitdiffstats
path: root/sys/fs/msdosfs/msdosfs_vfsops.c
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/fs/msdosfs/msdosfs_vfsops.c
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/fs/msdosfs/msdosfs_vfsops.c')
-rw-r--r--sys/fs/msdosfs/msdosfs_vfsops.c7
1 files changed, 3 insertions, 4 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;
OpenPOWER on IntegriCloud