tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: uvm_swap v4
> Date: Mon, 6 Jul 2026 11:33:56 +0200
> From: Reinoud Zandijk <reinoud%NetBSD.org@localhost>
>
> hereby an adjusted version that re-applies after the latest changes in
> uvm_swap.c made recently.
>
> @@ -1405,48 +1415,60 @@ swstrategy(struct buf *bp)
> /*
> - * B_RAW here implies user i/o on /dev/drum, for which we need
> - * to handle encryption/decryption here.
> - * for swap in/out, it's handled by the caller.
> + * if the swap is encrypted, we encrypt before we write. in the
> + * callback we ensure its always decrypted (again).
> */
> - if ((bp->b_flags & B_RAW) != 0 &&
> - atomic_load_relaxed(&uvm_swap_encrypt)) {
> - struct sw_physio_decrypt_context *ctx;
> + if (atomic_load_relaxed(&uvm_swap_encrypt)) {
> ...
> + /* get iobuf for our decryption nestio setup */
> + nbp = getiobuf(bp->b_vp, !uvm_lwp_is_pagedaemon(curlwp));
> ...
> @@ -2083,13 +2105,6 @@ uvm_swap_io(struct vm_page **pps, int st
> kva = uvm_pagermapin(pps, npages, mapinflags);
>
> /*
> - * encrypt writes in place if requested
> - */
> - if (write) {
> - uvm_swap_encrypt_pages(startslot, (void *)kva, npages);
> - }
Do I understand correctly that this introduces a new allocation, not
just when _reading_ from swap, but also when _writing_ to swap because
we are under memory pressure and unable to allocate?
That strikes me as extremely risky, and not worth the value of what
otherwise appears to be a minor refactoring. I think this change
needs a clearer justification.
Home |
Main Index |
Thread Index |
Old Index