The following diff tries to improve on the efficiency of try_to_unuse(). It removes the potential O(|swap_map|^2) business and makes it linear time. I'm not sure what this means in terms of overall change, but Linus seemed interested in the innefficiency in that code. Test with caution. Nathan.