Re: [PATCH v6 02/15] memory-hotplug: check whether all memory blocks are offlined or not when removing memory
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: Tang Chen <tangchen@xxxxxxxxxxxxxx>
- Subject: Re: [PATCH v6 02/15] memory-hotplug: check whether all memory blocks are offlined or not when removing memory
- From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 9 Jan 2013 15:11:40 -0800
- Cc: rientjes@xxxxxxxxxx, len.brown@xxxxxxxxx, benh@xxxxxxxxxxxxxxxxxxx, paulus@xxxxxxxxx, cl@xxxxxxxxx, minchan.kim@xxxxxxxxx, kosaki.motohiro@xxxxxxxxxxxxxx, isimatu.yasuaki@xxxxxxxxxxxxxx, wujianguo@xxxxxxxxxx, wency@xxxxxxxxxxxxxx, hpa@xxxxxxxxx, linfeng@xxxxxxxxxxxxxx, laijs@xxxxxxxxxxxxxx, mgorman@xxxxxxx, yinghai@xxxxxxxxxx, glommer@xxxxxxxxxxxxx, x86@xxxxxxxxxx, linux-mm@xxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, linuxppc-dev@xxxxxxxxxxxxxxxx, linux-acpi@xxxxxxxxxxxxxxx, linux-s390@xxxxxxxxxxxxxxx, linux-sh@xxxxxxxxxxxxxxx, linux-ia64@xxxxxxxxxxxxxxx, cmetcalf@xxxxxxxxxx, sparclinux@xxxxxxxxxxxxxxx
- In-reply-to: <1357723959-5416-3-git-send-email-tangchen@cn.fujitsu.com>
- List-id: <linux-ia64.vger.kernel.org>
- References: <1357723959-5416-1-git-send-email-tangchen@cn.fujitsu.com> <1357723959-5416-3-git-send-email-tangchen@cn.fujitsu.com>
On Wed, 9 Jan 2013 17:32:26 +0800
Tang Chen <tangchen@xxxxxxxxxxxxxx> 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?
--
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Index of Archives]
[Linux Kernel]
[Sparc Linux]
[DCCP]
[Linux ARM]
[Yosemite News]
[Linux SCSI]
[Linux x86_64]
[Linux for Ham Radio]