aboutsummaryrefslogtreecommitdiff
path: root/drivers/scsi/mpt3sas/mpi/mpi2_raid.h
diff options
context:
space:
mode:
authorHugh Dickins <[email protected]>2013-02-22 16:35:16 -0800
committerLinus Torvalds <[email protected]>2013-02-23 17:50:20 -0800
commitef4d43a8075891137ebc064e473d2e904971e933 (patch)
treea32216419976dca72813a107bf2200d1683341c4 /drivers/scsi/mpt3sas/mpi/mpi2_raid.h
parent9c620e2bc5aa4256c102ada34e6c76204ed5898b (diff)
ksm: stop hotremove lockdep warning
Complaints are rare, but lockdep still does not understand the way ksm_memory_callback(MEM_GOING_OFFLINE) takes ksm_thread_mutex, and holds it until the ksm_memory_callback(MEM_OFFLINE): that appears to be a problem because notifier callbacks are made under down_read of blocking_notifier_head->rwsem (so first the mutex is taken while holding the rwsem, then later the rwsem is taken while still holding the mutex); but is not in fact a problem because mem_hotplug_mutex is held throughout the dance. There was an attempt to fix this with mutex_lock_nested(); but if that happened to fool lockdep two years ago, apparently it does so no longer. I had hoped to eradicate this issue in extending KSM page migration not to need the ksm_thread_mutex. But then realized that although the page migration itself is safe, we do still need to lock out ksmd and other users of get_ksm_page() while offlining memory - at some point between MEM_GOING_OFFLINE and MEM_OFFLINE, the struct pages themselves may vanish, and get_ksm_page()'s accesses to them become a violation. So, give up on holding ksm_thread_mutex itself from MEM_GOING_OFFLINE to MEM_OFFLINE, and add a KSM_RUN_OFFLINE flag, and wait_while_offlining() checks, to achieve the same lockout without being caught by lockdep. This is less elegant for KSM, but it's more important to keep lockdep useful to other users - and I apologize for how long it took to fix. Signed-off-by: Hugh Dickins <[email protected]> Reported-by: Gerald Schaefer <[email protected]> Tested-by: Gerald Schaefer <[email protected]> Cc: Rik van Riel <[email protected]> Cc: Petr Holasek <[email protected]> Cc: Andrea Arcangeli <[email protected]> Cc: Izik Eidus <[email protected]> Cc: KOSAKI Motohiro <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'drivers/scsi/mpt3sas/mpi/mpi2_raid.h')
0 files changed, 0 insertions, 0 deletions