On Tue, 2008-11-04 at 17:34 +0100, Rafael J. Wysocki wrote: > Now, I need to do one more thing, which is to check how much memory has to be > freed before creating the image. For this purpose I need to lock memory > hotplug temporarily, count pages to free and unlock it. What interface should > I use for this purpose? > > [I'll also need to lock memory hotplug temporarily during resume.] We currently don't have any big switch to disable memory hotplug, like lock_memory_hotplug() or something. :) If you are simply scanning and counting pages, I think the best thing to use would be the zone_span_seq*() seqlock stuff. Do your count inside the seqlock's while loop. That covers detecting a zone changing while it is being scanned. The other case to detect is when a new zone gets added. These are really rare. Rare enough that we actually use a stop_machine() call in build_all_zonelists() to do it. All you would have to do is detect when one of these calls gets made. I think that's a good application for a new seq_lock. I've attached an utterly untested patch that should do the trick. Yasunori and KAME should probably take a look at it since the node addition code is theirs. -- Dave