svn commit: r245103 - in stable/9/sys: fs/devfs kern sys
Konstantin Belousov
kib at FreeBSD.org
Sun Jan 6 15:07:20 UTC 2013
Author: kib
Date: Sun Jan 6 15:07:19 2013
New Revision: 245103
URL: http://svnweb.freebsd.org/changeset/base/245103
Log:
MFC r244643:
Do not force a writer to the devfs file to drain the buffer writes.
Modified:
stable/9/sys/fs/devfs/devfs_vnops.c
stable/9/sys/kern/sys_generic.c
stable/9/sys/sys/file.h
Directory Properties:
stable/9/sys/ (props changed)
stable/9/sys/fs/ (props changed)
Modified: stable/9/sys/fs/devfs/devfs_vnops.c
==============================================================================
--- stable/9/sys/fs/devfs/devfs_vnops.c Sun Jan 6 14:59:59 2013 (r245102)
+++ stable/9/sys/fs/devfs/devfs_vnops.c Sun Jan 6 15:07:19 2013 (r245103)
@@ -1049,6 +1049,7 @@ devfs_open(struct vop_open_args *ap)
int error, ref, vlocked;
struct cdevsw *dsw;
struct file *fpop;
+ struct mtx *mtxp;
if (vp->v_type == VBLK)
return (ENXIO);
@@ -1099,6 +1100,16 @@ devfs_open(struct vop_open_args *ap)
#endif
if (fp->f_ops == &badfileops)
finit(fp, fp->f_flag, DTYPE_VNODE, dev, &devfs_ops_f);
+ mtxp = mtx_pool_find(mtxpool_sleep, fp);
+
+ /*
+ * Hint to the dofilewrite() to not force the buffer draining
+ * on the writer to the file. Most likely, the write would
+ * not need normal buffers.
+ */
+ mtx_lock(mtxp);
+ fp->f_vnread_flags |= FDEVFS_VNODE;
+ mtx_unlock(mtxp);
return (error);
}
Modified: stable/9/sys/kern/sys_generic.c
==============================================================================
--- stable/9/sys/kern/sys_generic.c Sun Jan 6 14:59:59 2013 (r245102)
+++ stable/9/sys/kern/sys_generic.c Sun Jan 6 15:07:19 2013 (r245103)
@@ -536,7 +536,8 @@ dofilewrite(td, fd, fp, auio, offset, fl
ktruio = cloneuio(auio);
#endif
cnt = auio->uio_resid;
- if (fp->f_type == DTYPE_VNODE)
+ if (fp->f_type == DTYPE_VNODE &&
+ (fp->f_vnread_flags & FDEVFS_VNODE) == 0)
bwillwrite();
if ((error = fo_write(fp, auio, td->td_ucred, flags, td))) {
if (auio->uio_resid != cnt && (error == ERESTART ||
Modified: stable/9/sys/sys/file.h
==============================================================================
--- stable/9/sys/sys/file.h Sun Jan 6 14:59:59 2013 (r245102)
+++ stable/9/sys/sys/file.h Sun Jan 6 15:07:19 2013 (r245103)
@@ -178,7 +178,8 @@ struct file {
#define f_advice f_vnun.fvn_advice
#define FOFFSET_LOCKED 0x1
-#define FOFFSET_LOCK_WAITING 0x2
+#define FOFFSET_LOCK_WAITING 0x2
+#define FDEVFS_VNODE 0x4
#endif /* _KERNEL || _WANT_FILE */
More information about the svn-src-stable-9
mailing list