Module Name: src
Committed By: chs
Date: Tue Feb 18 20:23:18 UTC 2020
Modified Files:
src/sys/kern: init_main.c
src/sys/miscfs/genfs: genfs_io.c
src/sys/rump/librump/rumpkern: rump.c
src/sys/rump/librump/rumpvfs: vm_vfs.c
src/sys/ufs/lfs: lfs_bio.c lfs_extern.h lfs_inode.h lfs_segment.c
lfs_syscalls.c lfs_vfsops.c
src/sys/uvm: uvm.h uvm_extern.h uvm_pager.c uvm_pdaemon.c uvm_swap.c
Log Message:
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.
To generate a diff of this commit:
cvs rdiff -u -r1.520 -r1.521 src/sys/kern/init_main.c
cvs rdiff -u -r1.84 -r1.85 src/sys/miscfs/genfs/genfs_io.c
cvs rdiff -u -r1.340 -r1.341 src/sys/rump/librump/rumpkern/rump.c
cvs rdiff -u -r1.36 -r1.37 src/sys/rump/librump/rumpvfs/vm_vfs.c
cvs rdiff -u -r1.144 -r1.145 src/sys/ufs/lfs/lfs_bio.c
cvs rdiff -u -r1.114 -r1.115 src/sys/ufs/lfs/lfs_extern.h
cvs rdiff -u -r1.23 -r1.24 src/sys/ufs/lfs/lfs_inode.h
cvs rdiff -u -r1.281 -r1.282 src/sys/ufs/lfs/lfs_segment.c
cvs rdiff -u -r1.175 -r1.176 src/sys/ufs/lfs/lfs_syscalls.c
cvs rdiff -u -r1.369 -r1.370 src/sys/ufs/lfs/lfs_vfsops.c
cvs rdiff -u -r1.73 -r1.74 src/sys/uvm/uvm.h
cvs rdiff -u -r1.219 -r1.220 src/sys/uvm/uvm_extern.h
cvs rdiff -u -r1.120 -r1.121 src/sys/uvm/uvm_pager.c
cvs rdiff -u -r1.123 -r1.124 src/sys/uvm/uvm_pdaemon.c
cvs rdiff -u -r1.185 -r1.186 src/sys/uvm/uvm_swap.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/kern/init_main.c
diff -u src/sys/kern/init_main.c:1.520 src/sys/kern/init_main.c:1.521
--- src/sys/kern/init_main.c:1.520 Sat Feb 15 18:12:15 2020
+++ src/sys/kern/init_main.c Tue Feb 18 20:23:17 2020
@@ -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 @@ main(void)
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();
Index: src/sys/miscfs/genfs/genfs_io.c
diff -u src/sys/miscfs/genfs/genfs_io.c:1.84 src/sys/miscfs/genfs/genfs_io.c:1.85
--- src/sys/miscfs/genfs/genfs_io.c:1.84 Wed Jan 15 17:55:44 2020
+++ src/sys/miscfs/genfs/genfs_io.c Tue Feb 18 20:23:17 2020
@@ -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 @@ genfs_getpages_read(struct vnode *vp, st
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 @@ genfs_getpages_read(struct vnode *vp, st
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 @@ genfs_gop_write(struct vnode *vp, struct
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 @@ genfs_gop_write_rwmap(struct vnode *vp,
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;
}
Index: src/sys/rump/librump/rumpkern/rump.c
diff -u src/sys/rump/librump/rumpkern/rump.c:1.340 src/sys/rump/librump/rumpkern/rump.c:1.341
--- src/sys/rump/librump/rumpkern/rump.c:1.340 Mon Feb 10 03:23:29 2020
+++ src/sys/rump/librump/rumpkern/rump.c Tue Feb 18 20:23:17 2020
@@ -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 @@ bool rump_ttycomponent = false;
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 @@ rump_init(void)
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);
Index: src/sys/rump/librump/rumpvfs/vm_vfs.c
diff -u src/sys/rump/librump/rumpvfs/vm_vfs.c:1.36 src/sys/rump/librump/rumpvfs/vm_vfs.c:1.37
--- src/sys/rump/librump/rumpvfs/vm_vfs.c:1.36 Wed Jan 15 17:55:44 2020
+++ src/sys/rump/librump/rumpvfs/vm_vfs.c Tue Feb 18 20:23:17 2020
@@ -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 @@ uvm_aio_aiodone(struct buf *bp)
kmem_free(pgs, npages * sizeof(*pgs));
}
-void
-uvm_aio_biodone(struct buf *bp)
-{
-
- uvm_aio_aiodone(bp);
-}
-
/*
* UBC
*/
Index: src/sys/ufs/lfs/lfs_bio.c
diff -u src/sys/ufs/lfs/lfs_bio.c:1.144 src/sys/ufs/lfs/lfs_bio.c:1.145
--- src/sys/ufs/lfs/lfs_bio.c:1.144 Tue Dec 31 13:07:14 2019
+++ src/sys/ufs/lfs/lfs_bio.c Tue Feb 18 20:23:17 2020
@@ -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 @@ lfs_newbuf(struct lfs *fs, struct vnode
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;
Index: src/sys/ufs/lfs/lfs_extern.h
diff -u src/sys/ufs/lfs/lfs_extern.h:1.114 src/sys/ufs/lfs/lfs_extern.h:1.115
--- src/sys/ufs/lfs/lfs_extern.h:1.114 Wed Aug 22 01:05:24 2018
+++ src/sys/ufs/lfs/lfs_extern.h Tue Feb 18 20:23:17 2020
@@ -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_data(struct lfs *, struct
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);
Index: src/sys/ufs/lfs/lfs_inode.h
diff -u src/sys/ufs/lfs/lfs_inode.h:1.23 src/sys/ufs/lfs/lfs_inode.h:1.24
--- src/sys/ufs/lfs/lfs_inode.h:1.23 Sat Jun 10 05:29:36 2017
+++ src/sys/ufs/lfs/lfs_inode.h Tue Feb 18 20:23:17 2020
@@ -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 @@ struct lfs_inode_ext {
#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
Index: src/sys/ufs/lfs/lfs_segment.c
diff -u src/sys/ufs/lfs/lfs_segment.c:1.281 src/sys/ufs/lfs/lfs_segment.c:1.282
--- src/sys/ufs/lfs/lfs_segment.c:1.281 Wed Jan 15 17:55:44 2020
+++ src/sys/ufs/lfs/lfs_segment.c Tue Feb 18 20:23:17 2020
@@ -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 @@ __KERNEL_RCSID(0, "$NetBSD: lfs_segment.
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 @@ static void lfs_cluster_callback(struct
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 @@ lfs_newclusterbuf(struct lfs *fs, struct
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 @@ lfs_writesuper(struct lfs *fs, daddr_t d
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 @@ lfs_match_tindir(struct lfs *fs, struct
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 @@ lfs_cluster_aiodone(struct buf *bp)
pool_put(&fs->lfs_clpool, cl);
}
-static void
-lfs_generic_callback(struct buf *bp, void (*aiodone)(struct buf *))
-{
- /* reset b_iodone for when this is a single-buf i/o. */
- bp->b_iodone = aiodone;
-
- workqueue_enqueue(uvm.aiodone_queue, &bp->b_work, NULL);
-}
-
-static void
-lfs_cluster_callback(struct buf *bp)
-{
-
- lfs_generic_callback(bp, lfs_cluster_aiodone);
-}
-
-void
-lfs_supercallback(struct buf *bp)
-{
-
- lfs_generic_callback(bp, lfs_super_aiodone);
-}
-
-/*
- * The only buffers that are going to hit these functions are the
- * segment write blocks, or the segment summaries, or the superblocks.
- *
- * All of the above are created by lfs_newbuf, and so do not need to be
- * released via brelse.
- */
-void
-lfs_callback(struct buf *bp)
-{
-
- lfs_generic_callback(bp, lfs_free_aiodone);
-}
-
/*
* Shellsort (diminishing increment sort) from Data Structures and
* Algorithms, Aho, Hopcraft and Ullman, 1983 Edition, page 290;
Index: src/sys/ufs/lfs/lfs_syscalls.c
diff -u src/sys/ufs/lfs/lfs_syscalls.c:1.175 src/sys/ufs/lfs/lfs_syscalls.c:1.176
--- src/sys/ufs/lfs/lfs_syscalls.c:1.175 Wed Jul 26 16:42:37 2017
+++ src/sys/ufs/lfs/lfs_syscalls.c Tue Feb 18 20:23:17 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_syscalls.c,v 1.175 2017/07/26 16:42:37 maya Exp $ */
+/* $NetBSD: lfs_syscalls.c,v 1.176 2020/02/18 20:23:17 chs Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003, 2007, 2007, 2008
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_syscalls.c,v 1.175 2017/07/26 16:42:37 maya Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_syscalls.c,v 1.176 2020/02/18 20:23:17 chs Exp $");
#ifndef LFS
# define LFS /* for prototypes in syscallargs.h */
@@ -1006,7 +1006,7 @@ lfs_fakebuf(struct lfs *fs, struct vnode
lfs_freebuf(fs, bp);
return NULL;
}
- KDASSERT(bp->b_iodone == lfs_callback);
+ KDASSERT(bp->b_iodone == lfs_free_aiodone);
#if 0
mutex_enter(&lfs_lock);
Index: src/sys/ufs/lfs/lfs_vfsops.c
diff -u src/sys/ufs/lfs/lfs_vfsops.c:1.369 src/sys/ufs/lfs/lfs_vfsops.c:1.370
--- src/sys/ufs/lfs/lfs_vfsops.c:1.369 Fri Jan 17 20:08:10 2020
+++ src/sys/ufs/lfs/lfs_vfsops.c Tue Feb 18 20:23:17 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: lfs_vfsops.c,v 1.369 2020/01/17 20:08:10 ad Exp $ */
+/* $NetBSD: lfs_vfsops.c,v 1.370 2020/02/18 20:23:17 chs Exp $ */
/*-
* Copyright (c) 1999, 2000, 2001, 2002, 2003, 2007, 2007
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_vfsops.c,v 1.369 2020/01/17 20:08:10 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_vfsops.c,v 1.370 2020/02/18 20:23:17 chs Exp $");
#if defined(_KERNEL_OPT)
#include "opt_lfs.h"
@@ -2113,7 +2113,7 @@ lfs_gop_write(struct vnode *vp, struct v
mbp->b_data = (void *)kva;
mbp->b_resid = mbp->b_bcount = bytes;
mbp->b_cflags = BC_BUSY|BC_AGE;
- mbp->b_iodone = uvm_aio_biodone;
+ mbp->b_iodone = uvm_aio_aiodone;
bp = NULL;
for (offset = startoffset;
Index: src/sys/uvm/uvm.h
diff -u src/sys/uvm/uvm.h:1.73 src/sys/uvm/uvm.h:1.74
--- src/sys/uvm/uvm.h:1.73 Tue Dec 31 22:42:51 2019
+++ src/sys/uvm/uvm.h Tue Feb 18 20:23:17 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm.h,v 1.73 2019/12/31 22:42:51 ad Exp $ */
+/* $NetBSD: uvm.h,v 1.74 2020/02/18 20:23:17 chs Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -112,12 +112,6 @@ struct uvm {
/* page daemon trigger */
int pagedaemon; /* daemon sleeps on this */
struct lwp *pagedaemon_lwp; /* daemon's lid */
-
- /* aiodone daemon */
- struct workqueue *aiodone_queue;
-
- /* aio_done is locked by uvm.pagedaemon_lock and splbio! */
- TAILQ_HEAD(, buf) aio_done; /* done async i/o reqs */
};
/*
Index: src/sys/uvm/uvm_extern.h
diff -u src/sys/uvm/uvm_extern.h:1.219 src/sys/uvm/uvm_extern.h:1.220
--- src/sys/uvm/uvm_extern.h:1.219 Wed Jan 15 17:55:45 2020
+++ src/sys/uvm/uvm_extern.h Tue Feb 18 20:23:17 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_extern.h,v 1.219 2020/01/15 17:55:45 ad Exp $ */
+/* $NetBSD: uvm_extern.h,v 1.220 2020/02/18 20:23:17 chs Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -757,7 +757,6 @@ void uvm_pagerealloc(struct vm_page *,
void uvm_setpagesize(void);
/* uvm_pager.c */
-void uvm_aio_biodone(struct buf *);
void uvm_aio_aiodone(struct buf *);
void uvm_aio_aiodone_pages(struct vm_page **, int, bool,
int);
Index: src/sys/uvm/uvm_pager.c
diff -u src/sys/uvm/uvm_pager.c:1.120 src/sys/uvm/uvm_pager.c:1.121
--- src/sys/uvm/uvm_pager.c:1.120 Wed Jan 15 17:55:45 2020
+++ src/sys/uvm/uvm_pager.c Tue Feb 18 20:23:17 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_pager.c,v 1.120 2020/01/15 17:55:45 ad Exp $ */
+/* $NetBSD: uvm_pager.c,v 1.121 2020/02/18 20:23:17 chs Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_pager.c,v 1.120 2020/01/15 17:55:45 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_pager.c,v 1.121 2020/02/18 20:23:17 chs Exp $");
#include "opt_uvmhist.h"
#include "opt_readahead.h"
@@ -146,12 +146,6 @@ uvm_pager_init(void)
uvm_pager_realloc_emerg();
/*
- * init ASYNC I/O queue
- */
-
- TAILQ_INIT(&uvm.aio_done);
-
- /*
* call pager init functions
*/
for (lcv = 0 ; lcv < __arraycount(uvmpagerops); lcv++) {
@@ -286,20 +280,6 @@ uvm_pagermapout(vaddr_t kva, int npages)
UVMHIST_LOG(maphist,"<- done",0,0,0,0);
}
-/*
- * interrupt-context iodone handler for single-buf i/os
- * or the top-level buf of a nested-buf i/o.
- */
-
-void
-uvm_aio_biodone(struct buf *bp)
-{
- /* reset b_iodone for when this is a single-buf i/o. */
- bp->b_iodone = uvm_aio_aiodone;
-
- workqueue_enqueue(uvm.aiodone_queue, &bp->b_work, NULL);
-}
-
void
uvm_aio_aiodone_pages(struct vm_page **pgs, int npages, bool write, int error)
{
Index: src/sys/uvm/uvm_pdaemon.c
diff -u src/sys/uvm/uvm_pdaemon.c:1.123 src/sys/uvm/uvm_pdaemon.c:1.124
--- src/sys/uvm/uvm_pdaemon.c:1.123 Wed Jan 15 17:55:45 2020
+++ src/sys/uvm/uvm_pdaemon.c Tue Feb 18 20:23:17 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_pdaemon.c,v 1.123 2020/01/15 17:55:45 ad Exp $ */
+/* $NetBSD: uvm_pdaemon.c,v 1.124 2020/02/18 20:23:17 chs Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_pdaemon.c,v 1.123 2020/01/15 17:55:45 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_pdaemon.c,v 1.124 2020/02/18 20:23:17 chs Exp $");
#include "opt_uvmhist.h"
#include "opt_readahead.h"
@@ -342,25 +342,6 @@ uvm_pageout(void *arg)
/*NOTREACHED*/
}
-
-/*
- * uvm_aiodone_worker: a workqueue callback for the aiodone daemon.
- */
-
-void
-uvm_aiodone_worker(struct work *wk, void *dummy)
-{
- struct buf *bp = (void *)wk;
-
- KASSERT(&bp->b_work == wk);
-
- /*
- * process an i/o that's done.
- */
-
- (*bp->b_iodone)(bp);
-}
-
void
uvm_pageout_start(int npages)
{
Index: src/sys/uvm/uvm_swap.c
diff -u src/sys/uvm/uvm_swap.c:1.185 src/sys/uvm/uvm_swap.c:1.186
--- src/sys/uvm/uvm_swap.c:1.185 Fri Dec 27 09:41:51 2019
+++ src/sys/uvm/uvm_swap.c Tue Feb 18 20:23:17 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_swap.c,v 1.185 2019/12/27 09:41:51 msaitoh Exp $ */
+/* $NetBSD: uvm_swap.c,v 1.186 2020/02/18 20:23:17 chs Exp $ */
/*
* Copyright (c) 1995, 1996, 1997, 2009 Matthew R. Green
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_swap.c,v 1.185 2019/12/27 09:41:51 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_swap.c,v 1.186 2020/02/18 20:23:17 chs Exp $");
#include "opt_uvmhist.h"
#include "opt_compat_netbsd.h"
@@ -1778,10 +1778,6 @@ uvm_swap_io(struct vm_page **pps, int st
write = (flags & B_READ) == 0;
async = (flags & B_ASYNC) != 0;
- /* XXX swap io make take place before the aiodone queue exists */
- if (uvm.aiodone_queue == NULL)
- async = 0;
-
/*
* allocate a buf for the i/o.
*/
@@ -1836,8 +1832,7 @@ uvm_swap_io(struct vm_page **pps, int st
*/
if (async) {
- KASSERT(uvm.aiodone_queue != NULL);
- bp->b_iodone = uvm_aio_biodone;
+ bp->b_iodone = uvm_aio_aiodone;
UVMHIST_LOG(pdhist, "doing async!", 0, 0, 0, 0);
if (curlwp == uvm.pagedaemon_lwp)
BIO_SETPRIO(bp, BPRIO_TIMECRITICAL);