Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/vfs_vnops.c
Show First 20 Lines • Show All 2,731 Lines • ▼ Show 20 Lines | vn_fsync_buf(struct vnode *vp, int waitfor) | ||||
error = 0; | error = 0; | ||||
maxretry = 10000; /* large, arbitrarily chosen */ | maxretry = 10000; /* large, arbitrarily chosen */ | ||||
mp = NULL; | mp = NULL; | ||||
if (vp->v_type == VCHR) { | if (vp->v_type == VCHR) { | ||||
VI_LOCK(vp); | VI_LOCK(vp); | ||||
mp = vp->v_rdev->si_mountpt; | mp = vp->v_rdev->si_mountpt; | ||||
VI_UNLOCK(vp); | VI_UNLOCK(vp); | ||||
} | } | ||||
bo = &vp->v_bufobj; | bo = vp2bo(vp); | ||||
BO_LOCK(bo); | BO_LOCK(bo); | ||||
loop1: | loop1: | ||||
/* | /* | ||||
* MARK/SCAN initialization to avoid infinite loops. | * MARK/SCAN initialization to avoid infinite loops. | ||||
*/ | */ | ||||
TAILQ_FOREACH(bp, &bo->bo_dirty.bv_hd, b_bobufs) { | TAILQ_FOREACH(bp, &bo->bo_dirty.bv_hd, b_bobufs) { | ||||
bp->b_vflags &= ~BV_SCANNED; | bp->b_vflags &= ~BV_SCANNED; | ||||
bp->b_error = 0; | bp->b_error = 0; | ||||
▲ Show 20 Lines • Show All 703 Lines • Show Last 20 Lines |