Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: [netbsd-11] src/sys
Module Name: src
Committed By: martin
Date: Fri Apr 3 12:38:34 UTC 2026
Modified Files:
src/sys/sys [netbsd-11]: buf.h
src/sys/uvm [netbsd-11]: uvm_pager.c uvm_swap.c uvm_swap.h
Log Message:
Pull up following revision(s) (requested by yamt in ticket #243):
sys/sys/buf.h: revision 1.136
sys/uvm/uvm_swap.c: revision 1.220
sys/uvm/uvm_swap.c: revision 1.221
sys/uvm/uvm_swap.c: revision 1.222
sys/uvm/uvm_pager.c: revision 1.133
sys/uvm/uvm_swap.c: revision 1.224
sys/uvm/uvm_pager.c: revision 1.134
sys/uvm/uvm_swap.c: revision 1.225
sys/uvm/uvm_pager.c: revision 1.135
sys/uvm/uvm_swap.h: revision 1.30
sys/uvm/uvm_swap.c: revision 1.226
sys/uvm/uvm_swap.c: revision 1.227
sys/uvm/uvm_swap.c: revision 1.228
sys/uvm/uvm_swap.c: revision 1.229
sys/uvm/uvm_swap.c: revision 1.216
sys/uvm/uvm_swap.c: revision 1.217
sys/uvm/uvm_swap.c: revision 1.219
sys/uvm/uvm_swap.c: revision 1.230
sys/uvm/uvm_swap.c: revision 1.231
swap_on: add a comment about the motivation to defer key generation
the original text from Taylor R Campbell, in PR/60084.
uvm_swap.c: make the drum mpsafe
* simplify the VREG path and make it mpsafe
* VBLK path seems already ok
* mark them D_MPSAFE
uvm_aio_aiodone_pages: do not discard user data on swap out failure
if swap out i/o failed, maybe the swap device is broken. it's
reasonable to mark it bad. however, there is no point to discard
the user data on the page being swapped out. unlike file pages,
the association to the particular swap slot is not permanent.
next time the page is picked as a victim by the page daemon, a
different swap slot, which is hopefully good, will be allocated.
sw_reg_strategy: stop panicking on hole
after the recent change to uvm_aio_aiodone_pages,
it should be ok to report errors here. the swap slots
will be marked bad as expected.
tested with a swap file with 50% holes:
```
Device Size Used Bad Avail Capacity Priority
/dev/dk1 2.0G 1.8G 0B 190M 91% 0
/swapfile_with_half_holes 2.0G 2.0G 1.0G 5.6M 100% 0
Total 4.0G 3.8G 1.0G 196M 95%
```
uvm_aio_aiodone_pages: add a comment
simplify swap encryption a bit
* disallow changes of vm.swap_encrypt sysctl when any swap
is configured. note: this doesn't affect the ability to
set it in /etc/sysctl.conf because /etc/rc.d/sysctl is
executed before /etc/rc.d/swap1.
* retire per-page encryption tracking. (swd_encmap)
from now on, the whole swap is encrypted or not.
PR/60084
uvm_swap.c: add a few assertions
fix swap encryption data corruption issue
when paging out, uvm_swap_io encrypts the page contents in-place
and then issues write requests to swapdev. if the write fails
for some reason, the pageout will be cancelled. but it leaves
the data in the pages encrypted. ie. data corruption. note that
this doesn't necessarily involve broken swap devices. as we are
in the pagedaemon context, some kind of transient errors are
rather normal. for example, ffs VOP_BMAP has special cases for
the pagedaemon to return ENOMEM.
this commit fixes the issue by simply reverting the encryption
on error.
PR/60082
uvm_swap.c: make the drum mpsafe (cont.)
mark swapiod WQ_MPSAFE.
swstrategy: add an assertion
swread/swwrite: hold swap_syscall_lock
to ensure that the list of swap devices is stable
while we are operating on them.
PR 60147
swstrategy: reject non page aligned i/o explicitly
our swap offset calculation logic assumes page aligned i/o.
non aligned requests from /dev/drum silently go to a wrong block.
it has always been this way since the initial uvm import in 1998.
this commit fixes it by simply rejecting non aligned requests.
note: requests from swap and libkvm are always page aligned.
Add b_private2 to struct buf
i plan to use this for swap i/o.
i'm not bumping kernel version as i reused an unused field.
(it used to be softdep b_dep and has been unused since 2009.)
sw_reg_strategy: do not clobber b_private
this fixes a regression caused by "uvm_swap.c: make the drum mpsafe".
b_private is for the owner of the buffer.
in case of /dev/drum i/o, we are not the owner of the buffer.
kern_physio.c is.
swread/swwrite: hold swap_syscall_lock (cont.)
fix a harmless merge botch i introduced while porting the patch
from git to cvs.
PR/60147
uvm_swap.c: fix /dev/drum regression caused by swap encryption
* decrypt data using a bounce buffer
* reject writes with ENOTSUP for now
PR/60083
swread/swwrite: update a comment about swapdev stability
PR/60147
To generate a diff of this commit:
cvs rdiff -u -r1.135 -r1.135.4.1 src/sys/sys/buf.h
cvs rdiff -u -r1.131 -r1.131.4.1 src/sys/uvm/uvm_pager.c
cvs rdiff -u -r1.209.2.1 -r1.209.2.2 src/sys/uvm/uvm_swap.c
cvs rdiff -u -r1.29 -r1.29.4.1 src/sys/uvm/uvm_swap.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Home |
Main Index |
Thread Index |
Old Index