Stop updating blk before it might be freed.
- Queries
- All Stories
- Search
- Advanced Search
- Transactions
- Transaction Logs
Advanced Search
Jul 21 2019
Back out the changes that would launch more that one trim request from a single call to swp_pager_trimswapspace.
If trimming fails after blocks are allocated, free the blocks and reset the trimming cursor.
Don't let the trimmer sleep waiting for a resources. Don't invoke the trimmer while holding an object lock. Do let the trimmer launch as many delete ops as it wants, subject to resource constraints. Don't worry about trimming too little.
Jul 20 2019
Add explanatory comment.
Fix Eflags typo.
Call swapon(2) after trimming, but before closing the trimming fd.
Jul 19 2019
Code formatting and comment changes.
Improve a comment.
Jul 15 2019
Act on reviewer feedback.
Jul 14 2019
Rename a variable. Restore a comment.
Make swapgeom_strategy() handle a BIO_DELETE just like a BIO_WRITE.
Bypass swp_pager_strategy for the BIO_DELETE case and just go to sp->sw_strategy(bp, sp);
Drop all the changes related to wiring and unwiring.
It would be unfair to Peter to keep guessing solutions for this problem and letting him try them out. Does anyone listening know what I've got wrong here?
Jul 13 2019
Add an assertion. Use vm_paddr_t variable to manage bounds checking at function start.
g_io_request requires that b_data be NULL before BIO_DELETE. Make it so.
Jul 12 2019
Jul 11 2019
Don't try to trim exactly the swap device we just allocated from; just look for one that needs trimming.
Tweak the parameters to make the max trim size bigger, and make the trim zone smaller.
Jul 10 2019
If we can allocation nothing from the next leaf, be sure to return immediately.
In the case that we have to back-up 'scan' because we've found that there's no next leaf with free blocks, we also have to back-up 'blk'.
Do I understand correctly that the "panic: freeing free block" condition is happening only with the patch from D20863 in place? Or does it happen with an unmodified kernel?
Jul 9 2019
Correct the last log field.
Add logging. Don't really try to trim anything.
Jul 8 2019
The obvious questions are:
Does this happen without the patch in place?
Does this happen before r349777?
Jul 7 2019
In swap_pager_reserve, release the write lock when not modifying the object.
In swap_pager_reserve, do all the allocation before acquiring the object lock. If all the allocation can't be done, leave the object alone.
Change a misleading variable name. Drop a contentious comment.
Fix some obvious deadlocks.
Jul 6 2019
Something less obviously blocking, though I'm sure some flags are set wrong and the wait for an available write resource (nsw_wcount_async) is unacceptible. There must a queue somewhere I could stick that task in, waiting for writing to be okay again.
The motivation for this change is that I was working on another change that would do something to every function that simplified entries, and when I got to the wiring/unwiring functions, I found that it was hard to do and that I'd have to do it twice. So I concocted this patch so that I'd only have to do it once. I'm sorry that it seems I just mess with your code for no real purpose other than to annoy you.
Change '.' to '?' in a comment.
Jul 5 2019
Add a locked-assertion.
Apply reviewer suggestions.
Add braces around one-line do-while body.
Fix typo.
Apply reviewer suggestion, unhappily.
Jul 4 2019
Address reviewer comments.
Mentors, what do you want me to do here?
Resolve conflicts with parts already checked in. Drop some goto-elimination in vm_map_wire_locked.
No semicolon.
Resolve merge conflicts. Don't confuse true with false.
Add/alter comments and slightly restructure a computation in response to reviewer comments.
Include other files.