:The code works fine in all of my tests, except that calling
:swapoff() when the system is under heavy paging load and has
:multiple swap devices sometimes leads to a few pages being missed
:by the scan. I think the problem is that some process allocates
:some swap and starts paging out just before the device is marked
:as off-limits. Am I missing a simple solution to this problem?
:(For now, I kludge around the issue by rescanning if there are
:still blocks remaining.)
Hmm. Yes, I think the issue here is that you may be missing
pages in objects which are undergoing I/O. You may need to
wait for other paging on the object (the pip count) to go to
zero. I will review that code more carefully in a little bit
and give you a definitive answer.