Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys remove the aiodoned thread. I originally added this to ...



details:   https://anonhg.NetBSD.org/src/rev/e2066d38225d
branches:  trunk
changeset: 969376:e2066d38225d
user:      chs <chs%NetBSD.org@localhost>
date:      Tue Feb 18 20:23:17 2020 +0000

description:
remove the aiodoned thread.  I originally added this to provide a thread context
for doing page cache iodone work, but since then biodone() has changed to
hand off all iodone work to a softint thread, so we no longer need the
special-purpose aiodoned thread.

diffstat:

 sys/kern/init_main.c              |   9 +-----
 sys/miscfs/genfs/genfs_io.c       |  15 +++-------
 sys/rump/librump/rumpkern/rump.c  |  20 +-------------
 sys/rump/librump/rumpvfs/vm_vfs.c |  11 +------
 sys/ufs/lfs/lfs_bio.c             |   6 ++--
 sys/ufs/lfs/lfs_extern.h          |   4 +-
 sys/ufs/lfs/lfs_inode.h           |   4 +-
 sys/ufs/lfs/lfs_segment.c         |  51 +++-----------------------------------
 sys/ufs/lfs/lfs_syscalls.c        |   6 ++--
 sys/ufs/lfs/lfs_vfsops.c          |   6 ++--
 sys/uvm/uvm.h                     |   8 +-----
 sys/uvm/uvm_extern.h              |   3 +-
 sys/uvm/uvm_pager.c               |  24 +----------------
 sys/uvm/uvm_pdaemon.c             |  23 +----------------
 sys/uvm/uvm_swap.c                |  11 ++------
 15 files changed, 38 insertions(+), 163 deletions(-)

diffs (truncated from 569 to 300 lines):

diff -r 2e319d9b23b3 -r e2066d38225d sys/kern/init_main.c
--- a/sys/kern/init_main.c      Tue Feb 18 17:50:32 2020 +0000
+++ b/sys/kern/init_main.c      Tue Feb 18 20:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: init_main.c,v 1.520 2020/02/15 18:12:15 ad Exp $       */
+/*     $NetBSD: init_main.c,v 1.521 2020/02/18 20:23:17 chs Exp $      */
 
 /*-
  * Copyright (c) 2008, 2009, 2019 The NetBSD Foundation, Inc.
@@ -97,7 +97,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: init_main.c,v 1.520 2020/02/15 18:12:15 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: init_main.c,v 1.521 2020/02/18 20:23:17 chs Exp $");
 
 #include "opt_ddb.h"
 #include "opt_inet.h"
@@ -720,11 +720,6 @@
            NULL, NULL, "ioflush"))
                panic("fork syncer");
 
-       /* Create the aiodone daemon kernel thread. */
-       if (workqueue_create(&uvm.aiodone_queue, "aiodoned",
-           uvm_aiodone_worker, NULL, PRI_VM, IPL_NONE, WQ_MPSAFE))
-               panic("fork aiodoned");
-
        /* Wait for final configure threads to complete. */
        config_finalize_mountroot();
 
diff -r 2e319d9b23b3 -r e2066d38225d sys/miscfs/genfs/genfs_io.c
--- a/sys/miscfs/genfs/genfs_io.c       Tue Feb 18 17:50:32 2020 +0000
+++ b/sys/miscfs/genfs/genfs_io.c       Tue Feb 18 20:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: genfs_io.c,v 1.84 2020/01/15 17:55:44 ad Exp $ */
+/*     $NetBSD: genfs_io.c,v 1.85 2020/02/18 20:23:17 chs Exp $        */
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.84 2020/01/15 17:55:44 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.85 2020/02/18 20:23:17 chs Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -606,9 +606,6 @@
        if (kva == 0)
                return EBUSY;
 
-       if (uvm.aiodone_queue == NULL)
-               async = 0;
-
        mbp = getiobuf(vp, true);
        mbp->b_bufsize = totalbytes;
        mbp->b_data = (void *)kva;
@@ -616,7 +613,7 @@
        mbp->b_cflags = BC_BUSY;
        if (async) {
                mbp->b_flags = B_READ | B_ASYNC;
-               mbp->b_iodone = uvm_aio_biodone;
+               mbp->b_iodone = uvm_aio_aiodone;
        } else {
                mbp->b_flags = B_READ;
                mbp->b_iodone = NULL;
@@ -1396,9 +1393,8 @@
            UVMPAGER_MAPIN_WRITE | UVMPAGER_MAPIN_WAITOK);
        len = npages << PAGE_SHIFT;
 
-       KASSERT(uvm.aiodone_queue != NULL);
        error = genfs_do_io(vp, off, kva, len, flags, UIO_WRITE,
-                           uvm_aio_biodone);
+                           uvm_aio_aiodone);
 
        return error;
 }
@@ -1429,9 +1425,8 @@
            UVMPAGER_MAPIN_READ | UVMPAGER_MAPIN_WAITOK);
        len = npages << PAGE_SHIFT;
 
-       KASSERT(uvm.aiodone_queue != NULL);
        error = genfs_do_io(vp, off, kva, len, flags, UIO_WRITE,
-                           uvm_aio_biodone);
+                           uvm_aio_aiodone);
 
        return error;
 }
diff -r 2e319d9b23b3 -r e2066d38225d sys/rump/librump/rumpkern/rump.c
--- a/sys/rump/librump/rumpkern/rump.c  Tue Feb 18 17:50:32 2020 +0000
+++ b/sys/rump/librump/rumpkern/rump.c  Tue Feb 18 20:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: rump.c,v 1.340 2020/02/10 03:23:29 riastradh Exp $     */
+/*     $NetBSD: rump.c,v 1.341 2020/02/18 20:23:17 chs Exp $   */
 
 /*
  * Copyright (c) 2007-2011 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.340 2020/02/10 03:23:29 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rump.c,v 1.341 2020/02/18 20:23:17 chs Exp $");
 
 #include <sys/systm.h>
 #define ELFSIZE ARCH_ELFSIZE
@@ -116,15 +116,6 @@
 
 pool_cache_t pnbuf_cache;
 
-static void
-rump_aiodone_worker(struct work *wk, void *dummy)
-{
-       struct buf *bp = (struct buf *)wk;
-
-       KASSERT(&bp->b_work == wk);
-       bp->b_iodone(bp);
-}
-
 static int rump_inited;
 
 void (*rump_vfs_drainbufs)(int) = (void *)nullop;
@@ -460,13 +451,6 @@
 
        cold = 0;
 
-       /* aieeeedondest */
-       if (rump_threads) {
-               if (workqueue_create(&uvm.aiodone_queue, "aiodoned",
-                   rump_aiodone_worker, NULL, 0, 0, WQ_MPSAFE))
-                       panic("aiodoned");
-       }
-
        sysctl_finalize();
 
        module_init_class(MODULE_CLASS_ANY);
diff -r 2e319d9b23b3 -r e2066d38225d sys/rump/librump/rumpvfs/vm_vfs.c
--- a/sys/rump/librump/rumpvfs/vm_vfs.c Tue Feb 18 17:50:32 2020 +0000
+++ b/sys/rump/librump/rumpvfs/vm_vfs.c Tue Feb 18 20:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: vm_vfs.c,v 1.36 2020/01/15 17:55:44 ad Exp $   */
+/*     $NetBSD: vm_vfs.c,v 1.37 2020/02/18 20:23:17 chs Exp $  */
 
 /*
  * Copyright (c) 2008-2011 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vm_vfs.c,v 1.36 2020/01/15 17:55:44 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vm_vfs.c,v 1.37 2020/02/18 20:23:17 chs Exp $");
 
 #include <sys/param.h>
 
@@ -90,13 +90,6 @@
        kmem_free(pgs, npages * sizeof(*pgs));
 }
 
-void
-uvm_aio_biodone(struct buf *bp)
-{
-
-       uvm_aio_aiodone(bp);
-}
-
 /*
  * UBC
  */
diff -r 2e319d9b23b3 -r e2066d38225d sys/ufs/lfs/lfs_bio.c
--- a/sys/ufs/lfs/lfs_bio.c     Tue Feb 18 17:50:32 2020 +0000
+++ b/sys/ufs/lfs/lfs_bio.c     Tue Feb 18 20:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lfs_bio.c,v 1.144 2019/12/31 13:07:14 ad Exp $ */
+/*     $NetBSD: lfs_bio.c,v 1.145 2020/02/18 20:23:17 chs Exp $        */
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002, 2003, 2008 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_bio.c,v 1.144 2019/12/31 13:07:14 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_bio.c,v 1.145 2020/02/18 20:23:17 chs Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -729,7 +729,7 @@
        bp->b_blkno = daddr;
        bp->b_error = 0;
        bp->b_resid = 0;
-       bp->b_iodone = lfs_callback;
+       bp->b_iodone = lfs_free_aiodone;
        bp->b_cflags = BC_BUSY | BC_NOCACHE;
        bp->b_private = fs;
 
diff -r 2e319d9b23b3 -r e2066d38225d sys/ufs/lfs/lfs_extern.h
--- a/sys/ufs/lfs/lfs_extern.h  Tue Feb 18 17:50:32 2020 +0000
+++ b/sys/ufs/lfs/lfs_extern.h  Tue Feb 18 20:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lfs_extern.h,v 1.114 2018/08/22 01:05:24 msaitoh Exp $ */
+/*     $NetBSD: lfs_extern.h,v 1.115 2020/02/18 20:23:17 chs Exp $     */
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -197,7 +197,7 @@
 int lfs_match_indir(struct lfs *, struct buf *);
 int lfs_match_dindir(struct lfs *, struct buf *);
 int lfs_match_tindir(struct lfs *, struct buf *);
-void lfs_callback(struct buf *);
+void lfs_free_aiodone(struct buf *);
 void lfs_acquire_finfo(struct lfs *fs, ino_t, int);
 void lfs_release_finfo(struct lfs *fs);
 
diff -r 2e319d9b23b3 -r e2066d38225d sys/ufs/lfs/lfs_inode.h
--- a/sys/ufs/lfs/lfs_inode.h   Tue Feb 18 17:50:32 2020 +0000
+++ b/sys/ufs/lfs/lfs_inode.h   Tue Feb 18 20:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lfs_inode.h,v 1.23 2017/06/10 05:29:36 maya Exp $      */
+/*     $NetBSD: lfs_inode.h,v 1.24 2020/02/18 20:23:17 chs Exp $       */
 /*  from NetBSD: ulfs_inode.h,v 1.5 2013/06/06 00:51:50 dholland Exp  */
 /*  from NetBSD: inode.h,v 1.72 2016/06/03 15:36:03 christos Exp  */
 
@@ -214,7 +214,7 @@
 
 #ifdef _KERNEL
 
-# define LFS_IS_MALLOC_BUF(bp) ((bp)->b_iodone == lfs_callback)
+# define LFS_IS_MALLOC_BUF(bp) ((bp)->b_iodone == lfs_free_aiodone)
 
 /* log for debugging writes to the Ifile */
 # ifdef DEBUG
diff -r 2e319d9b23b3 -r e2066d38225d sys/ufs/lfs/lfs_segment.c
--- a/sys/ufs/lfs/lfs_segment.c Tue Feb 18 17:50:32 2020 +0000
+++ b/sys/ufs/lfs/lfs_segment.c Tue Feb 18 20:23:17 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lfs_segment.c,v 1.281 2020/01/15 17:55:44 ad Exp $     */
+/*     $NetBSD: lfs_segment.c,v 1.282 2020/02/18 20:23:17 chs Exp $    */
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_segment.c,v 1.281 2020/01/15 17:55:44 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_segment.c,v 1.282 2020/02/18 20:23:17 chs Exp $");
 
 #ifdef DEBUG
 # define vndebug(vp, str) do {                                         \
@@ -109,11 +109,8 @@
 
 MALLOC_JUSTDEFINE(M_SEGMENT, "LFS segment", "Segment for LFS");
 
-static void lfs_generic_callback(struct buf *, void (*)(struct buf *));
-static void lfs_free_aiodone(struct buf *);
 static void lfs_super_aiodone(struct buf *);
 static void lfs_cluster_aiodone(struct buf *);
-static void lfs_cluster_callback(struct buf *);
 
 /*
  * Determine if it's OK to start a partial in this segment, or if we need
@@ -136,7 +133,6 @@
 
 int     lfs_match_fake(struct lfs *, struct buf *);
 void    lfs_newseg(struct lfs *);
-void    lfs_supercallback(struct buf *);
 void    lfs_updatemeta(struct segment *);
 void    lfs_writesuper(struct lfs *, daddr_t);
 int     lfs_writevnodes(struct lfs *fs, struct mount *mp,
@@ -2007,7 +2003,7 @@
        bp = getiobuf(vp, true);
        bp->b_dev = NODEV;
        bp->b_blkno = bp->b_lblkno = addr;
-       bp->b_iodone = lfs_cluster_callback;
+       bp->b_iodone = lfs_cluster_aiodone;
        bp->b_private = cl;
 
        return bp;
@@ -2430,7 +2426,7 @@
        bp->b_flags = (bp->b_flags & ~B_READ) | B_ASYNC;
        bp->b_oflags &= ~(BO_DONE | BO_DELWRI);
        bp->b_error = 0;
-       bp->b_iodone = lfs_supercallback;
+       bp->b_iodone = lfs_super_aiodone;
 
        if (fs->lfs_sp != NULL && fs->lfs_sp->seg_flags & SEGM_SYNC)
                BIO_SETPRIO(bp, BPRIO_TIMECRITICAL);
@@ -2508,7 +2504,7 @@
        return (lbn < 0 && (-lbn - ULFS_NDADDR) % LFS_NINDIR(fs) == 2);
 }
 
-static void
+void
 lfs_free_aiodone(struct buf *bp)
 {
        struct lfs *fs;
@@ -2675,43 +2671,6 @@
        pool_put(&fs->lfs_clpool, cl);
 }



Home | Main Index | Thread Index | Old Index