Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/vfs_vnops.c
Show First 20 Lines • Show All 1,060 Lines • ▼ Show 20 Lines | if (vp->v_type == VREG && (fp->f_flag & O_APPEND)) | ||||
ioflag |= IO_APPEND; | ioflag |= IO_APPEND; | ||||
if (fp->f_flag & FNONBLOCK) | if (fp->f_flag & FNONBLOCK) | ||||
ioflag |= IO_NDELAY; | ioflag |= IO_NDELAY; | ||||
if (fp->f_flag & O_DIRECT) | if (fp->f_flag & O_DIRECT) | ||||
ioflag |= IO_DIRECT; | ioflag |= IO_DIRECT; | ||||
if ((fp->f_flag & O_FSYNC) || | if ((fp->f_flag & O_FSYNC) || | ||||
(vp->v_mount && (vp->v_mount->mnt_flag & MNT_SYNCHRONOUS))) | (vp->v_mount && (vp->v_mount->mnt_flag & MNT_SYNCHRONOUS))) | ||||
ioflag |= IO_SYNC; | ioflag |= IO_SYNC; | ||||
/* | |||||
* For O_DSYNC we set both IO_SYNC and IO_DATASYNC, so that VOP_WRITE() | |||||
kib: ... instead set IO_SYNC | IO_DATASYNC there. | |||||
* implementations that don't understand IO_DATASYNC fall back to full | |||||
Done Inline ActionsI suggest to not change this condition... kib: I suggest to not change this condition... | |||||
* O_SYNC behavior. | |||||
*/ | |||||
if (fp->f_flag & O_DSYNC) | |||||
ioflag |= IO_SYNC | IO_DATASYNC; | |||||
mp = NULL; | mp = NULL; | ||||
if (vp->v_type != VCHR && | if (vp->v_type != VCHR && | ||||
(error = vn_start_write(vp, &mp, V_WAIT | PCATCH)) != 0) | (error = vn_start_write(vp, &mp, V_WAIT | PCATCH)) != 0) | ||||
goto unlock; | goto unlock; | ||||
advice = get_advice(fp, uio); | advice = get_advice(fp, uio); | ||||
if (MNT_SHARED_WRITES(mp) || | if (MNT_SHARED_WRITES(mp) || | ||||
▲ Show 20 Lines • Show All 2,347 Lines • Show Last 20 Lines |
... instead set IO_SYNC | IO_DATASYNC there.