Thread (67 messages) 67 messages, 6 authors, 2013-02-04

Re: [PATCH v6 02/15] memory-hotplug: check whether all memory blocks are offlined or not when removi

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2013-01-09 23:11:46
Also in: linux-acpi, linux-mm, linux-s390, linuxppc-dev, lkml, sparclinux

On Wed, 9 Jan 2013 17:32:26 +0800
Tang Chen [off-list ref] wrote:
We remove the memory like this:
1. lock memory hotplug
2. offline a memory block
3. unlock memory hotplug
4. repeat 1-3 to offline all memory blocks
5. lock memory hotplug
6. remove memory(TODO)
7. unlock memory hotplug

All memory blocks must be offlined before removing memory. But we don't hold
the lock in the whole operation. So we should check whether all memory blocks
are offlined before step6. Otherwise, kernel maybe panicked.
Well, the obvious question is: why don't we hold lock_memory_hotplug()
for all of steps 1-4?  Please send the reasons for this in a form which
I can paste into the changelog.


Actually, I wonder if doing this would fix a race in the current
remove_memory() repeat: loop.  That code does a
find_memory_block_hinted() followed by offline_memory_block(), but
afaict find_memory_block_hinted() only does a get_device().  Is the
get_device() sufficiently strong to prevent problems if another thread
concurrently offlines or otherwise alters this memory_block's state?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help