svn commit: r347348 - stable/12/sys/kern
Mark Johnston
markj at FreeBSD.org
Wed May 8 16:02:00 UTC 2019
Author: markj
Date: Wed May 8 16:01:59 2019
New Revision: 347348
URL: https://svnweb.freebsd.org/changeset/base/347348
Log:
MFC r346888:
Stop checking TD_IDLETHREAD() in buffer cache routines.
Modified:
stable/12/sys/kern/vfs_bio.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/kern/vfs_bio.c
==============================================================================
--- stable/12/sys/kern/vfs_bio.c Wed May 8 15:48:55 2019 (r347347)
+++ stable/12/sys/kern/vfs_bio.c Wed May 8 16:01:59 2019 (r347348)
@@ -2083,8 +2083,11 @@ breada(struct vnode * vp, daddr_t * rablkno, int * rab
struct ucred * cred, int flags, void (*ckhashfunc)(struct buf *))
{
struct buf *rabp;
+ struct thread *td;
int i;
+ td = curthread;
+
for (i = 0; i < cnt; i++, rablkno++, rabsize++) {
if (inmem(vp, *rablkno))
continue;
@@ -2093,16 +2096,14 @@ breada(struct vnode * vp, daddr_t * rablkno, int * rab
brelse(rabp);
continue;
}
- if (!TD_IS_IDLETHREAD(curthread)) {
#ifdef RACCT
- if (racct_enable) {
- PROC_LOCK(curproc);
- racct_add_buf(curproc, rabp, 0);
- PROC_UNLOCK(curproc);
- }
-#endif /* RACCT */
- curthread->td_ru.ru_inblock++;
+ if (racct_enable) {
+ PROC_LOCK(curproc);
+ racct_add_buf(curproc, rabp, 0);
+ PROC_UNLOCK(curproc);
}
+#endif /* RACCT */
+ td->td_ru.ru_inblock++;
rabp->b_flags |= B_ASYNC;
rabp->b_flags &= ~B_INVAL;
if ((flags & GB_CKHASH) != 0) {
@@ -2158,16 +2159,14 @@ breadn_flags(struct vnode *vp, daddr_t blkno, int size
*/
readwait = 0;
if ((bp->b_flags & B_CACHE) == 0) {
- if (!TD_IS_IDLETHREAD(td)) {
#ifdef RACCT
- if (racct_enable) {
- PROC_LOCK(td->td_proc);
- racct_add_buf(td->td_proc, bp, 0);
- PROC_UNLOCK(td->td_proc);
- }
-#endif /* RACCT */
- td->td_ru.ru_inblock++;
+ if (racct_enable) {
+ PROC_LOCK(td->td_proc);
+ racct_add_buf(td->td_proc, bp, 0);
+ PROC_UNLOCK(td->td_proc);
}
+#endif /* RACCT */
+ td->td_ru.ru_inblock++;
bp->b_iocmd = BIO_READ;
bp->b_flags &= ~B_INVAL;
if ((flags & GB_CKHASH) != 0) {
@@ -2268,16 +2267,14 @@ bufwrite(struct buf *bp)
bp->b_runningbufspace = bp->b_bufsize;
space = atomic_fetchadd_long(&runningbufspace, bp->b_runningbufspace);
- if (!TD_IS_IDLETHREAD(curthread)) {
#ifdef RACCT
- if (racct_enable) {
- PROC_LOCK(curproc);
- racct_add_buf(curproc, bp, 1);
- PROC_UNLOCK(curproc);
- }
-#endif /* RACCT */
- curthread->td_ru.ru_oublock++;
+ if (racct_enable) {
+ PROC_LOCK(curproc);
+ racct_add_buf(curproc, bp, 1);
+ PROC_UNLOCK(curproc);
}
+#endif /* RACCT */
+ curthread->td_ru.ru_oublock++;
if (oldflags & B_ASYNC)
BUF_KERNPROC(bp);
bp->b_iooffset = dbtob(bp->b_blkno);
@@ -4029,9 +4026,6 @@ loop:
*/
if (flags & GB_NOCREAT)
return (EEXIST);
- if (bdomain[bo->bo_domain].bd_freebuffers == 0 &&
- TD_IS_IDLETHREAD(curthread))
- return (EBUSY);
bsize = vn_isdisk(vp, NULL) ? DEV_BSIZE : bo->bo_bsize;
KASSERT(bsize != 0, ("bsize == 0, check bo->bo_bsize"));
More information about the svn-src-stable
mailing list