Home | History | Annotate | Download | only in kern
History log of /src/sys/kern/kern_physio.c
RevisionDateAuthorComments
 1.102  10-Jul-2022  riastradh physio(9): Avoid left shift of negative in alignment check.

Reported-by: syzbot+426b1db52f91ad2b994f@syzkaller.appspotmail.com
https://syzkaller.appspot.com/bug?id=f2456661792789db6d1c20e9d7e48db5c151d56d
 1.101  30-Jun-2022  riastradh physio(9): Include error in KASSERTMSG.

May help to track down:
https://syzkaller.appspot.com/bug?id=d57553ea3fc65cb7f11df947154795451b0dd3a8
 1.100  13-Mar-2022  riastradh kern: Use harmless, not harmful, integer truncation in physio.

Reported-by: syzbot+13abd9bc700f7ceac337@syzkaller.appspotmail.com
 1.99  16-Sep-2021  andvar fix typos in word "successful".
 1.98  14-Mar-2020  ad OR into bp->b_cflags; don't overwrite.
 1.97  08-Dec-2019  ad Revert previous. No performance gain worth the potential headaches
with buffers in these contexts.
 1.96  08-Dec-2019  ad Avoid thundering herd: cv_broadcast(&bp->b_busy) -> cv_signal(&bp->b_busy)
 1.95  04-Apr-2019  mlelstv Don't validate buffer size for tape I/O, this is already done by
the tape driver. Using MAXBSIZE as limit was also wrong on sun2 where
MAXBSIZE < MAXPHYS.
 1.94  26-Mar-2019  mlelstv physio can issue multiple concurrent I/O requests for scatter/gather and
split requests, concurrent requests are limited to use multiple-of-DEV_BSIZE
offsets.

Restrict this to D_DISK devices.

For other devices fix uio accounting to allow arbitrary offsets again.
 1.93  21-Apr-2015  pooka branches: 1.93.18;
Don't check if constant-sized KM_SLEEP allocations succeeded.
 1.92  10-Feb-2011  pooka branches: 1.92.14; 1.92.32;
Make vmapbuf() return success/error and make physio deal with a
failure.
 1.91  26-May-2009  hannken branches: 1.91.4; 1.91.6; 1.91.8;
PR kern/39536: bufq related problem when writing DVDR and DVDRWs.

Remove a race where physio_done() may use memory already freed.

Observed by Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>.
 1.90  18-May-2009  ad - Remove unneded uvm_lwp_hold(), uvm_lwp_rele().
- Make physio_concurrency tuneable via crash(8).
- Update comments.
 1.89  09-Nov-2008  bouyer branches: 1.89.4;
Assert that bp->b_error == 0 if all data have been transfered in
physio_biodone(). We have more chance to have the fauly code in the
stack trace when doing the check here than in physio_done().
 1.88  24-Sep-2008  hannken branches: 1.88.2; 1.88.4; 1.88.6;
Resolve a race when physio_done signals completion before it tries to
free a buffer. This will fail if the buffer owner has a chance to
modify the BC_DONTFREE flag before putphysbuf() examines it.

Fix by removing get/putphysbuf() and BC_DONTFREE. Physio_done() now
has an explicit test for a buffer coming from the call of physio().

Observed by Lars Nordlund when writing a DVD with growisofs, see PR kern/39536.

Reviewed by: Jason Thorpe <thorpej@netbsd.org>
 1.87  15-Feb-2008  ad branches: 1.87.6; 1.87.10; 1.87.12; 1.87.16;
Give bbusy() an interlock argument. If the we need to wait for the buffer,
the interlock is dropped and reacquired when awoken. This allows for
busying buffers attached to a list that is not locked by bufcache_lock.
 1.86  02-Jan-2008  ad Merge vmlocking2 to head.
 1.85  06-Nov-2007  ad branches: 1.85.2; 1.85.6;
Merge scheduler changes from the vmlocking branch. All discussed on
tech-kern:

- Invert priority space so that zero is the lowest priority. Rearrange
number and type of priority levels into bands. Add new bands like
'kernel real time'.
- Ignore the priority level passed to tsleep. Compute priority for
sleep dynamically.
- For SCHED_4BSD, make priority adjustment per-LWP, not per-process.
 1.84  18-Sep-2007  hannken branches: 1.84.4; 1.84.6;
Stop abusing a `struct buf' for state information. Use new `struct physio_stat'
and use kmutex and kcondvar here.
Fix an error introduced with B_ERROR removal where reading at EOM returned EIO.

Approved by: Andrew Doran <ad@netbsd.org>
 1.83  29-Jul-2007  ad branches: 1.83.4; 1.83.6; 1.83.8;
It's not a good idea for device drivers to modify b_flags, as they don't
need to understand the locking around that field. Instead of setting
B_ERROR, set b_error instead. b_error is 'owned' by whoever completes
the I/O request.
 1.82  12-Jul-2007  rmind branches: 1.82.2;
Implementation of per-CPU work-queues support for workqueue(9) interface.
WQ_PERCPU flag for workqueue and additional argument for workqueue_enqueue()
to assign a CPU might be used. Notes:
- For now, the list is used for workqueue_queue, which is non-optimal,
and will be changed with array, where index would be CPU ID.
- The data structures should be changed to be cache-friendly.

Reviewed by: <yamt>, <tech-kern>
 1.81  09-Jul-2007  ad Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.80  04-Mar-2007  christos branches: 1.80.2; 1.80.4;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.79  22-Feb-2007  thorpej TRUE -> true, FALSE -> false
 1.78  21-Feb-2007  thorpej Replace the Mach-derived boolean_t type with the C99 bool type. A
future commit will replace use of TRUE and FALSE with true and false.
 1.77  21-Dec-2006  yamt branches: 1.77.2;
merge yamt-splraiseipl branch.

- finish implementing splraiseipl (and makeiplcookie).
http://mail-index.NetBSD.org/tech-kern/2006/07/01/0000.html
- complete workqueue(9) and fix its ipl problem, which is reported
to cause audio skipping.
- fix netbt (at least compilation problems) for some ports.
- fix PR/33218.
 1.76  01-Nov-2006  yamt remove some __unused from function parameters.
 1.75  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.74  05-Oct-2006  chs add support for O_DIRECT (I/O directly to application memory,
bypassing any kernel caching for file data).
 1.73  18-Apr-2006  yamt branches: 1.73.8; 1.73.10;
from Christian Ehrhardt:
* physio: The first call to ltsleep should apparently use o &obp->b_interlock
instead of bp->b_interlock (bp is probably NULL here).
 1.72  16-Jan-2006  yamt branches: 1.72.2; 1.72.4; 1.72.6; 1.72.8; 1.72.10;
- tweak RUN_ONCE api to allow init_func returns an error.
- physio: handle failure of workqueue_create.
 1.71  04-Jan-2006  yamt - add simple functions to allocate/free a buffer for i/o.
- make bufpool static.
 1.70  17-Dec-2005  yamt branches: 1.70.2;
fix spurious EINVAL at end of partition.

- rather than special-caseing EINVAL,
simply pick an error at the lowest offset.
- correct uio_resid.
- add some debug code.
 1.69  14-Dec-2005  yamt simplify rev.1.68 and fix EINVAL problem. add a comment. PR/32224.
 1.68  13-Dec-2005  yamt physio: deal with unaligned buffers/small maxphys/overlapped buffers.
fix PR/32224 from Matthias Scheler.
(uvm_vslock needs to be redesigned for threaded applications.
but it's a different problem.)
 1.67  04-Dec-2005  yamt physio_done:
- report a correct error.
- remove a no-op goto.
 1.66  04-Nov-2005  yamt physio:
- update uio_resid properly.
- don't miss i/o errors near the end of partition.
 1.65  31-Oct-2005  yamt fix ioctl problems after the recent physio changes
in some drivers including wd and scsi.

- physio: if a caller provided a buf, stick to use it
because some drivers use it as an identifier.
- sprinkle simple_locks.
- scsistrategy: rather than issueing an async request and
waiting for its completion, simply issue a sync request.
the way to wait for the completion had an assumption that
B_CALL is never used. it isn't the case after the recent
physio() changes.

pointed/analyzed/tested by Martin Husemann.
 1.64  30-Oct-2005  yamt physio: comment out IPL_BIO because it's not available for some ports.
(it isn't used in the current implementation anyway.)
 1.63  29-Oct-2005  yamt fix compilation problem in the previous when !defined(DIAGNOSTIC).
pointed by xtraeme@.
 1.62  29-Oct-2005  yamt physio: make requests with large buffers faster,
by queueing more i/o simultaneously.
 1.61  23-Jun-2005  thorpej branches: 1.61.2; 1.61.4;
Use ANSI function decls. Apply some static.
 1.60  23-Mar-2004  junyoung - Nuke __P().
- Drop trailing spaces.
 1.59  17-Feb-2004  simonb Don't shadow a function name with a parameter.
 1.58  10-Jan-2004  yamt store a i/o priority hint in struct buf for buffer queue discipline.
 1.57  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.56  25-Feb-2003  thorpej branches: 1.56.2;
Add a new BUF_INIT() macro which initializes b_dep and b_interlock, and
use it. This fixes a few places where either b_dep or b_interlock were
not properly initialized.
 1.55  05-Feb-2003  pk Make the buffer cache code MP-safe.
 1.54  18-Jan-2003  thorpej Merge the nathanw_sa branch.
 1.53  30-Aug-2002  hannken Remove the old device buffer queue interface.

Approved by: Jason R. Thorpe <thorpej@wasabisystems.com>
 1.52  14-Feb-2002  chs branches: 1.52.8;
allow writing to write-only mappings. fixes PR 3493.
 1.51  12-Nov-2001  lukem add RCSIDs
 1.50  15-Sep-2001  chs branches: 1.50.2;
a whole bunch of changes to improve performance and robustness under load:

- remove special treatment of pager_map mappings in pmaps. this is
required now, since I've removed the globals that expose the address range.
pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's
no longer any need to special-case it.
- eliminate struct uvm_vnode by moving its fields into struct vnode.
- rewrite the pageout path. the pager is now responsible for handling the
high-level requests instead of only getting control after a bunch of work
has already been done on its behalf. this will allow us to UBCify LFS,
which needs tighter control over its pages than other filesystems do.
writing a page to disk no longer requires making it read-only, which
allows us to write wired pages without causing all kinds of havoc.
- use a new PG_PAGEOUT flag to indicate that a page should be freed
on behalf of the pagedaemon when it's unlocked. this flag is very similar
to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the
pageout fails due to eg. an indirect-block buffer being locked.
this allows us to remove the "version" field from struct vm_page,
and together with shrinking "loan_count" from 32 bits to 16,
struct vm_page is now 4 bytes smaller.
- no longer use PG_RELEASED for swap-backed pages. if the page is busy
because it's being paged out, we can't release the swap slot to be
reallocated until that write is complete, but unlike with vnodes we
don't keep a count of in-progress writes so there's no good way to
know when the write is done. instead, when we need to free a busy
swap-backed page, just sleep until we can get it busy ourselves.
- implement a fast-path for extending writes which allows us to avoid
zeroing new pages. this substantially reduces cpu usage.
- encapsulate the data used by the genfs code in a struct genfs_node,
which must be the first element of the filesystem-specific vnode data
for filesystems which use genfs_{get,put}pages().
- eliminate many of the UVM pagerops, since they aren't needed anymore
now that the pager "put" operation is a higher-level operation.
- enhance the genfs code to allow NFS to use the genfs_{get,put}pages
instead of a modified copy.
- clean up struct vnode by removing all the fields that used to be used by
the vfs_cluster.c code (which we don't use anymore with UBC).
- remove kmem_object and mb_object since they were useless.
instead of allocating pages to these objects, we now just allocate
pages with no object. such pages are mapped in the kernel until they
are freed, so we can use the mapping to find the page to free it.
this allows us to remove splvm() protection in several places.

The sum of all these changes improves write throughput on my
decstation 5000/200 to within 1% of the rate of NetBSD 1.5
and reduces the elapsed time for "make release" of a NetBSD 1.5
source tree on my 128MB pc to 10% less than a 1.5 kernel took.
 1.49  24-Jul-2001  wiz branches: 1.49.2;
s/necesary/necessary/
 1.48  08-Jul-2001  wiz branches: 1.48.2;
Correct various misspellings of 'transfer' and inflected forms.
 1.47  15-Mar-2001  chs eliminate the KERN_* error codes in favor of the traditional E* codes.
the mapping is:

KERN_SUCCESS 0
KERN_INVALID_ADDRESS EFAULT
KERN_PROTECTION_FAILURE EACCES
KERN_NO_SPACE ENOMEM
KERN_INVALID_ARGUMENT EINVAL
KERN_FAILURE various, mostly turn into KASSERTs
KERN_RESOURCE_SHORTAGE ENOMEM
KERN_NOT_RECEIVER <unused>
KERN_NO_ACCESS <unused>
KERN_PAGES_LOCKED <unused>
 1.46  08-Dec-2000  augustss branches: 1.46.2;
Use correct type for todo variable.
Use more explicit panics messages.
 1.45  27-Nov-2000  chs Initial integration of the Unified Buffer Cache project.
 1.44  29-Sep-2000  ad (*minphys)() musn't return zero.
 1.43  27-Jun-2000  mrg remove include of <vm/vm.h>
 1.42  08-May-2000  thorpej __predict_false() uvm_useracc() failure.
 1.41  29-Mar-2000  simonb Don't need to include <sys/conf.h> here.
 1.40  14-Feb-2000  thorpej One small piece from UBC: create a pool for I/O buffers. One small piece
not from UBC: make physio use it instead of its own home-grown thing.
 1.39  21-Jan-2000  thorpej Preserve B_ORDERED.
 1.38  15-Nov-1999  fvdl Add Kirk McKusick's soft updates code to the trunk. Not enabled by
default, as the copyright on the main file (ffs_softdep.c) is such
that is has been put into gnusrc. options SOFTDEP will pull this
in. This code also contains the trickle syncer.

Bump version number to 1.4O
 1.37  17-Jun-1999  thorpej branches: 1.37.2; 1.37.4; 1.37.8;
Make uvm_vslock() return the error code from uvm_fault_wire(). All places
which use uvm_vslock() should now test the return value. If it's not
KERN_SUCCESS, wiring the pages failed, so the operation which is using
uvm_vslock() should error out.

XXX We currently just EFAULT a failed uvm_vslock(). We may want to do
more about translating error codes in the future.
 1.36  26-May-1999  thorpej Pass the appropriate access_type to uvm_vslock() for the given physio
operation: B_READ == VM_PROT_READ|VM_PROT_WRITE, B_WRITE == VM_PROT_READ.
 1.35  24-Mar-1999  mrg branches: 1.35.4;
completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
 1.34  10-Feb-1999  kleink Use of casts as lvalues is a GNU C extension; rearrange slightly.
 1.33  04-Aug-1998  perry Abolition of bcopy, ovbcopy, bcmp, and bzero, phase one.
bcopy(x, y, z) -> memcpy(y, x, z)
ovbcopy(x, y, z) -> memmove(y, x, z)
bcmp(x, y, z) -> memcmp(x, y, z)
bzero(x, y) -> memset(x, 0, y)
 1.32  08-May-1998  kleink Fix some arithmetics lossage on typeless pointers.
 1.31  30-Apr-1998  thorpej Pass vslock() and vsunlock() a proc *, rather than implicitly operating
on curproc.
 1.30  10-Feb-1998  mrg - add defopt's for UVM, UVMHIST and PMAP_NEW.
- remove unnecessary UVMHIST_DECL's.
 1.29  05-Feb-1998  mrg initial import of the new virtual memory system, UVM, into -current.

UVM was written by chuck cranor <chuck@maria.wustl.edu>, with some
minor portions derived from the old Mach code. i provided some help
getting swap and paging working, and other bug fixes/ideas. chuck
silvers <chuq@chuq.com> also provided some other fixes.

this is the rest of the MI portion changes.

this will be KNF'd shortly. :-)
 1.28  19-May-1997  pk Use PHOLD() and PRELE(), rather than manipulating p_holdcnt directly.
 1.27  13-Jun-1996  pk Check user access rights only if `uio_segflg' says it's a user space buffer.
 1.26  04-Feb-1996  christos branches: 1.26.4;
First pass at prototyping
 1.25  10-Oct-1995  mycroft Check for todo<0, done<0, and done>todo.
 1.24  12-Aug-1995  mycroft minphys() functions really should return void.
 1.23  27-Jul-1995  mycroft After an I/O operation completes, immediately set B_BUSY again. Also,
lower spl sooner, and remove an unneeded splbio()/splx() pair.
 1.22  24-Jul-1995  cgd prototype strategy and minphys, use & check minphys return value
 1.21  04-Jul-1995  mycroft Make each disk and tape driver define its own read and write functions.
Deprecate rawread() and rawwrite() completely. Remove d_strategy from cdevsw to
force the abstraction barrier.
 1.20  29-Jun-1994  cgd New RCS ID's, take two. they're more aesthecially pleasant, and use 'NetBSD'
 1.19  28-Jun-1994  mycroft Eliminate use of b_bufsize, and instead pass an extra arg to v(un)mapbuf(),
to be consistent with vs)un)lock().
 1.18  26-Jun-1994  mycroft Set b_bufsize after the minphys routine is called.
 1.17  16-Jun-1994  mycroft Set b_bufsize, for use by v{,un}mapbuf().
 1.16  15-Jun-1994  mycroft Turn P_NOSWAP and P_PHYSIO into a hold count, as suggested by a comment.
 1.15  20-May-1994  cgd update with merged versions
 1.14  20-May-1994  cgd 4.4-Lite versions
 1.13  04-May-1994  mycroft HPUXCOMPAT -> COMPAT_HPUX
 1.12  21-Apr-1994  cgd Convert mount, vnode, and buf structs to use <sys/queue.h>. Also,
some knf and structure frobbing to do along with it.
 1.11  27-Jan-1994  cgd kill hack for vfs_bio jolitz-ish hack
 1.10  18-Dec-1993  mycroft Canonicalize all #includes.
 1.9  16-Dec-1993  pk Use proc pointer passed in uio rather then curproc for credentials (should
perhaps be done for b_proc also).
 1.8  07-Dec-1993  pk Properly initialize the credentials fields in the buffer used in physio().
Actually use the credentials of `curproc' when doing IO (among other things,
this allows us to read /dev/drum when swapping on an NFS mounted file).
 1.7  12-Nov-1993  cgd new specfs.h and fifo.h locations
 1.6  08-Jul-1993  cgd branches: 1.6.4;
if mincnt returns 0 (i.e. off end of disk, or something), punt.
 1.5  08-Jul-1993  cgd mark the buffer busy immediately when we acquire it,
also, sleep at a slightly higher priority (so says mw...)
 1.4  27-Jun-1993  andrew ANSIfications - removed all implicit function return types and argument
definitions. Ensured that all files include "systm.h" to gain access to
general prototypes. Casts where necessary.
 1.3  24-Jun-1993  mycroft Fix uninitialized variable.
 1.2  22-Jun-1993  cgd special case raw disk handling return values
 1.1  16-Jun-1993  cgd branches: 1.1.1;
use/add new physio...
 1.1.1.1  01-Mar-1998  fvdl Import 4.4BSD-Lite for reference
 1.6.4.2  12-Nov-1993  cgd new specfs.h and fifo.h locations, and include file syntax updates
 1.6.4.1  24-Sep-1993  mycroft Make all files using spl*() #include cpu.h. Changes from trunk.
init_main.c: New method of pseudo-device of initialization.
kern_clock.c: hardclock() and softclock() now take a pointer to a clockframe.
softclock() only does callouts.
kern_synch.c: Remove spurious declaration of endtsleep(). Adjust uses of
averunnable for new struct loadav.
subr_prf.c: Allow printf() formats in panic().
tty.c: averunnable changes.
vfs_subr.c: va_size and va_bytes are now quads.
 1.26.4.1  11-Dec-1996  mycroft From trunk:
Check access rights iff UIO_USERSPACE.
 1.35.4.1  21-Jun-1999  thorpej Sync w/ -current.
 1.37.8.2  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.37.8.1  21-Dec-1999  wrstuden Initial commit of recent changes to make DEV_BSIZE go away.

Runs on i386, needs work on other arch's. Main kernel routines should be
fine, but a number of the stand programs need help.

cd, fd, ccd, wd, and sd have been updated. sd has been tested with non-512
byte block devices. vnd, raidframe, and lfs need work.

Non 2**n block support is automatic for LKM's and conditional for kernels
on "options NON_PO2_BLOCKS".
 1.37.4.1  19-Oct-1999  fvdl Bring in Kirk McKusick's FFS softdep code on a branch.
 1.37.2.4  27-Mar-2001  bouyer Sync with HEAD.
 1.37.2.3  13-Dec-2000  bouyer Sync with HEAD (for UBC fixes).
 1.37.2.2  08-Dec-2000  bouyer Sync with HEAD.
 1.37.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
 1.46.2.9  17-Sep-2002  nathanw Catch up to -current.
 1.46.2.8  12-Jul-2002  nathanw No longer need to pull in lwp.h; proc.h pulls it in for us.
 1.46.2.7  24-Jun-2002  nathanw Curproc->curlwp renaming.

Change uses of "curproc->l_proc" back to "curproc", which is more like the
original use. Bare uses of "curproc" are now "curlwp".

"curproc" is now #defined in proc.h as ((curlwp) ? (curlwp)->l_proc) : NULL)
so that it is always safe to reference curproc (*de*referencing curproc
is another story, but that's always been true).
 1.46.2.6  28-Feb-2002  nathanw Catch up to -current.
 1.46.2.5  14-Nov-2001  nathanw Catch up to -current.
 1.46.2.4  21-Sep-2001  nathanw Catch up to -current.
 1.46.2.3  24-Aug-2001  nathanw Catch up with -current.
 1.46.2.2  09-Apr-2001  nathanw Catch up with -current.
 1.46.2.1  05-Mar-2001  nathanw Initial commit of scheduler activations and lightweight process support.
 1.48.2.4  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.48.2.3  16-Mar-2002  jdolecek Catch up with -current.
 1.48.2.2  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.48.2.1  03-Aug-2001  lukem update to -current
 1.49.2.2  01-Oct-2001  fvdl Catch up with -current.
 1.49.2.1  07-Sep-2001  thorpej Commit my "devvp" changes to the thorpej-devvp branch. This
replaces the use of dev_t in most places with a struct vnode *.

This will form the basic infrastructure for real cloning device
support (besides being architecurally cleaner -- it'll be good
to get away from using numbers to represent objects).
 1.50.2.1  12-Nov-2001  thorpej Sync the thorpej-mips-cache branch with -current.
 1.52.8.1  31-Aug-2002  gehenna catch up with -current.
 1.56.2.5  11-Dec-2005  christos Sync with head.
 1.56.2.4  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.56.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.56.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.56.2.1  03-Aug-2004  skrll Sync with HEAD
 1.61.4.1  02-Nov-2005  yamt sync with head.
 1.61.2.8  27-Feb-2008  yamt sync with head.
 1.61.2.7  21-Jan-2008  yamt sync with head
 1.61.2.6  15-Nov-2007  yamt sync with head.
 1.61.2.5  27-Oct-2007  yamt sync with head.
 1.61.2.4  03-Sep-2007  yamt sync with head.
 1.61.2.3  26-Feb-2007  yamt sync with head.
 1.61.2.2  30-Dec-2006  yamt sync with head.
 1.61.2.1  21-Jun-2006  yamt sync with head.
 1.70.2.2  01-Feb-2006  yamt sync with head.
 1.70.2.1  15-Jan-2006  yamt sync with head.
 1.72.10.1  24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.72.8.1  19-Apr-2006  elad sync with head.
 1.72.6.1  24-May-2006  yamt sync with head.
 1.72.4.1  22-Apr-2006  simonb Sync with head.
 1.72.2.1  09-Sep-2006  rpaulo sync with head
 1.73.10.3  10-Dec-2006  yamt sync with head.
 1.73.10.2  22-Oct-2006  yamt sync with head
 1.73.10.1  18-Sep-2006  yamt don't bother to wrap splraiseipl and IPL_xxx with #if notyet.
 1.73.8.3  12-Jan-2007  ad Sync with head.
 1.73.8.2  18-Nov-2006  ad Sync with head.
 1.73.8.1  11-Sep-2006  ad Use mutexes to protect workqueues.
 1.77.2.2  12-Mar-2007  rmind Sync with HEAD.
 1.77.2.1  27-Feb-2007  yamt - sync with head.
- move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
 1.80.4.1  11-Jul-2007  mjf Sync with head.
 1.80.2.10  27-Oct-2007  yamt fix priorities for some kernel threads. advised and ok'ed by Andrew Doran.
 1.80.2.9  25-Oct-2007  ad Fix vnd(4).
 1.80.2.8  09-Oct-2007  ad Sync with head.
 1.80.2.7  09-Oct-2007  ad Sync with head.
 1.80.2.6  24-Aug-2007  ad Sync with buffer cache locking changes. See buf.h/vfs_bio.c for details.
Some minor portions are incomplete and needs to be verified as a whole.
 1.80.2.5  19-Aug-2007  ad - Back out the biodone() changes.
- Eliminate B_ERROR (from HEAD).
 1.80.2.4  15-Jul-2007  ad Sync with head.
 1.80.2.3  23-Jun-2007  ad physiod workqueue doesn't need to be at IPL_BIO.
 1.80.2.2  05-Apr-2007  ad - Make context switch counters 64-bit, and count the total number of
context switches + voluntary, instead of involuntary + voluntary.
- Add lwp::l_swaplock for uvm.
- PHOLD/PRELE are replaced.
 1.80.2.1  13-Mar-2007  ad Pull in the initial set of changes for the vmlocking branch.
 1.82.2.1  15-Aug-2007  skrll Sync with HEAD.
 1.83.8.2  29-Jul-2007  ad It's not a good idea for device drivers to modify b_flags, as they don't
need to understand the locking around that field. Instead of setting
B_ERROR, set b_error instead. b_error is 'owned' by whoever completes
the I/O request.
 1.83.8.1  29-Jul-2007  ad file kern_physio.c was added on branch matt-mips64 on 2007-07-29 12:15:46 +0000
 1.83.6.3  23-Mar-2008  matt sync with HEAD
 1.83.6.2  09-Jan-2008  matt sync with HEAD
 1.83.6.1  06-Nov-2007  matt sync with HEAD
 1.83.4.2  06-Nov-2007  joerg Sync with HEAD.
 1.83.4.1  02-Oct-2007  joerg Sync with HEAD.
 1.84.6.2  18-Feb-2008  mjf Sync with HEAD.
 1.84.6.1  19-Nov-2007  mjf Sync with HEAD.
 1.84.4.1  13-Nov-2007  bouyer Sync with HEAD
 1.85.6.1  02-Jan-2008  bouyer Sync with HEAD
 1.85.2.1  04-Dec-2007  ad Pull the vmlocking changes into a new branch.
 1.87.16.2  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.87.16.1  19-Oct-2008  haad Sync with HEAD.
 1.87.12.1  10-Oct-2008  skrll Sync with HEAD.
 1.87.10.2  20-Jun-2009  yamt sync with head
 1.87.10.1  04-May-2009  yamt sync with head.
 1.87.6.2  17-Jan-2009  mjf Sync with HEAD.
 1.87.6.1  28-Sep-2008  mjf Sync with HEAD.
 1.88.6.1  27-May-2009  snj branches: 1.88.6.1.2;
Pull up following revision(s) (requested by hannken in ticket #781):
sys/kern/kern_physio.c: revision 1.91
PR kern/39536: bufq related problem when writing DVDR and DVDRWs.
Remove a race where physio_done() may use memory already freed.
Observed by Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>.
 1.88.6.1.2.1  21-Apr-2010  matt sync to netbsd-5
 1.88.4.1  27-May-2009  snj Pull up following revision(s) (requested by hannken in ticket #781):
sys/kern/kern_physio.c: revision 1.91
PR kern/39536: bufq related problem when writing DVDR and DVDRWs.
Remove a race where physio_done() may use memory already freed.
Observed by Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>.
 1.88.2.1  19-Jan-2009  skrll Sync with HEAD.
 1.89.4.1  23-Jul-2009  jym Sync with HEAD.
 1.91.8.1  17-Feb-2011  bouyer Sync with HEAD
 1.91.6.1  06-Jun-2011  jruoho Sync with HEAD.
 1.91.4.1  05-Mar-2011  rmind sync with head
 1.92.32.1  06-Jun-2015  skrll Sync with HEAD
 1.92.14.2  03-Dec-2017  jdolecek update from HEAD
 1.92.14.1  12-Sep-2012  tls Initial snapshot of work to eliminate 64K MAXPHYS. Basically works for
physio (I/O to raw devices); needs more doing to get it going with the
filesystems, but it shouldn't damage data.

All work's been done on amd64 so far. Not hard to add support to other
ports. If others want to pitch in, one very helpful thing would be to
sort out when and how IDE disks can do 128K or larger transfers, and
adjust the various PCI IDE (or at least ahcisata) drivers and wd.c
accordingly -- it would make testing much easier. Another very helpful
thing would be to implement a smart minphys() for RAIDframe along the
lines detailed in the MAXPHYS-NOTES file.
 1.93.18.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.93.18.1  10-Jun-2019  christos Sync with HEAD

RSS XML Feed