Currently do_wp_page contains 265 code lines. It also contains 9 goto statements, of which 5 are targeting labels which are not cleanup related. This makes the function extremely difficult to understand. The following patches are an attempt at breaking the function to its basic components, and making it easier to understand. The first 4 patches are straight forward function extractions from do_wp_page. As we extract functions, we remove unneeded parameters and simplify the code as much as possible. However, the functionality is supposed to remain completely unchanged. The patches also attempt to document the functionality of each extracted function. The last patch moves the MMU notifier call. Originally, it was conditionally called from the unlock step. The patch moves it to the only call site which sets the conditions to call the notifier. This results in a minor functional change - the notifier for the end of the invalidation is called after we release the page cache of the old page, and not before. Given that the notifier is for the end of the invalidation period, this is supposed to be OK for all users of the MMU notifiers, who should not be touching the relevant page anyway. The patches have been tested using trinity on a KVM machine with 4 vCPU, with all possible kernel debugging options enabled. So far, we have not seen any regressions. We have also tested the patches with internal tests we have that stress the MMU notifiers, again without seeing any issues. Shachar Raindel (5): mm: Refactor do_wp_page, extract the reuse case mm: Refactor do_wp_page - extract the unlock flow mm: refactor do_wp_page, extract the page copy flow mm: Refactor do_wp_page handling of shared vma into a function mm: Move the MMU-notifier code from wp_page_unlock to wp_page_copy mm/memory.c | 418 +++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 247 insertions(+), 171 deletions(-) -- 1.7.11.2 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>