On Thu, Feb 06, 2014 at 12:34, Mark Kettenis wrote: > I believe the scenario you sketched should only land you in > uvm_wait_pla(), but not in uvm_wait(). Perhaps with the current code > we can end up in uvm_wait(), but I think those would be bugs where the > driver I/O paths are doing memory allocations when they really > shouldn't. Therefore, I'm not sure we should add the bufbackoff() > call in uvm_wait(). At the very least I'd like to have a printf > *before* the bufbackoff() call there.
Sure. I didn't observe that path, but since the current "fix" of printf and msleep is used both places, I added bufbackoff both places. > I'd also like to see a comment on the bufbackoff() call in > uvm_wait_pla() explaining that even though we pushed back the buffer > cache in the page daemon, we might still consume the freed pages when > paging out dirty pages while scanning. Sure.