Changeset View
Changeset View
Standalone View
Standalone View
sys/ufs/ffs/ffs_vfsops.c
Show First 20 Lines • Show All 2,576 Lines • ▼ Show 20 Lines | if ((vp->v_vflag & VV_COPYONWRITE) && nocopy == 0 && | ||||
runningbufwakeup(bp); | runningbufwakeup(bp); | ||||
TAILQ_FOREACH(tbp, &bp->b_cluster.cluster_head, | TAILQ_FOREACH(tbp, &bp->b_cluster.cluster_head, | ||||
b_cluster.cluster_entry) { | b_cluster.cluster_entry) { | ||||
error = ffs_copyonwrite(vp, tbp); | error = ffs_copyonwrite(vp, tbp); | ||||
if (error != 0 && | if (error != 0 && | ||||
error != EOPNOTSUPP) { | error != EOPNOTSUPP) { | ||||
bp->b_error = error; | bp->b_error = error; | ||||
bp->b_ioflags |= BIO_ERROR; | bp->b_ioflags |= BIO_ERROR; | ||||
bp->b_flags &= ~B_BARRIER; | |||||
bufdone(bp); | bufdone(bp); | ||||
return; | return; | ||||
} | } | ||||
} | } | ||||
bp->b_runningbufspace = bp->b_bufsize; | bp->b_runningbufspace = bp->b_bufsize; | ||||
atomic_add_long(&runningbufspace, | atomic_add_long(&runningbufspace, | ||||
bp->b_runningbufspace); | bp->b_runningbufspace); | ||||
} else { | } else { | ||||
error = ffs_copyonwrite(vp, bp); | error = ffs_copyonwrite(vp, bp); | ||||
if (error != 0 && error != EOPNOTSUPP) { | if (error != 0 && error != EOPNOTSUPP) { | ||||
bp->b_error = error; | bp->b_error = error; | ||||
bp->b_ioflags |= BIO_ERROR; | bp->b_ioflags |= BIO_ERROR; | ||||
bp->b_flags &= ~B_BARRIER; | |||||
bufdone(bp); | bufdone(bp); | ||||
return; | return; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
#ifdef SOFTUPDATES | #ifdef SOFTUPDATES | ||||
if ((bp->b_flags & B_CLUSTER) != 0) { | if ((bp->b_flags & B_CLUSTER) != 0) { | ||||
TAILQ_FOREACH(tbp, &bp->b_cluster.cluster_head, | TAILQ_FOREACH(tbp, &bp->b_cluster.cluster_head, | ||||
▲ Show 20 Lines • Show All 76 Lines • Show Last 20 Lines |