The change introduced by the patch is evident in the kernel message log for Thread 0:
between page indexes 2 and 1 there's now another function call to write_cache_pages()
instead of just another iteration of the for-loop inside one call.
Original kernel:
[ 695.276320] Thread 0 running, TID = 3293!
[ 695.281210] kp1_pre_handler():070 :: state 1 .... :: pid = 1165, mapping = 0xffff962333263730, comm = 'kworker/u4:2'
[ 695.299026] kp1_pre_handler():101 :: state 1 -> 2 :: pid = 1165, mapping = 0xffff962333263730, comm ('kworker/u4:2') is kworker AND wbc->range_cyclic (0x1) is true AND mapping->writeback_index (0x2) is 0x2.
[ 695.314808] kp2_pre_handler():119 :: state 2 .... :: pid = 1165, page index = 2
[ 695.322822] kp3_pre_handler():144 :: state 2 .... :: pid = 1165, page index = 2, calling writepage()
<< ... HERE ... >>
[ 695.330308] kp2_pre_handler():119 :: state 2 .... :: pid = 1165, page index = 1
[ 695.334355] kp2_pre_handler():123 :: state 2 -> 3 :: pid = 1165, page index = 1, spin 5 seconds before lock_page()...
Test kernel:
[ 170.194880] Thread 0 running, TID = 2498!
[ 170.200011] kp1_pre_handler():070 :: state 1 .... :: pid = 7, mapping = 0xffff993df9136fb0, comm = 'kworker/u4:0'
[ 170.217616] kp1_pre_handler():101 :: state 1 -> 2 :: pid = 7, mapping = 0xffff993df9136fb0, comm ('kworker/u4:0') is kworker AND wbc->range_cyclic (0x1) is true AND mapping->writeback_index (0x2) is 0x2.
[ 170.238633] kp2_pre_handler():119 :: state 2 .... :: pid = 7, page index = 2
[ 170.248024] kp3_pre_handler():144 :: state 2 .... :: pid = 7, page index = 2, calling writepage()
[ 170.261141] kp1_pre_handler():070 :: state 2 .... :: pid = 7, mapping = 0xffff993df9136fb0, comm = 'kworker/u4:0'
[ 170.272150] kp2_pre_handler():119 :: state 2 .... :: pid = 7, page index = 1
[ 170.279860] kp2_pre_handler():123 :: state 2 -> 3 :: pid = 7, page index = 1, spin 5 seconds before lock_page()...
The change introduced by the patch is evident in the kernel message log for Thread 0:
between page indexes 2 and 1 there's now another function call to write_cache_pages()
instead of just another iteration of the for-loop inside one call.
Original kernel:
[ 695.276320] Thread 0 running, TID = 3293! handler( ):070 :: state 1 .... :: pid = 1165, mapping = 0xffff962333263730, comm = 'kworker/u4:2' handler( ):101 :: state 1 -> 2 :: pid = 1165, mapping = 0xffff962333263730, comm ('kworker/u4:2') is kworker AND wbc->range_cyclic (0x1) is true AND mapping- >writeback_ index (0x2) is 0x2. handler( ):119 :: state 2 .... :: pid = 1165, page index = 2 handler( ):144 :: state 2 .... :: pid = 1165, page index = 2, calling writepage() handler( ):119 :: state 2 .... :: pid = 1165, page index = 1 handler( ):123 :: state 2 -> 3 :: pid = 1165, page index = 1, spin 5 seconds before lock_page()...
[ 695.281210] kp1_pre_
[ 695.299026] kp1_pre_
[ 695.314808] kp2_pre_
[ 695.322822] kp3_pre_
<< ... HERE ... >>
[ 695.330308] kp2_pre_
[ 695.334355] kp2_pre_
Test kernel:
[ 170.194880] Thread 0 running, TID = 2498! handler( ):070 :: state 1 .... :: pid = 7, mapping = 0xffff993df9136fb0, comm = 'kworker/u4:0' handler( ):101 :: state 1 -> 2 :: pid = 7, mapping = 0xffff993df9136fb0, comm ('kworker/u4:0') is kworker AND wbc->range_cyclic (0x1) is true AND mapping- >writeback_ index (0x2) is 0x2. handler( ):119 :: state 2 .... :: pid = 7, page index = 2 handler( ):144 :: state 2 .... :: pid = 7, page index = 2, calling writepage() handler( ):070 :: state 2 .... :: pid = 7, mapping = 0xffff993df9136fb0, comm = 'kworker/u4:0' handler( ):119 :: state 2 .... :: pid = 7, page index = 1 handler( ):123 :: state 2 -> 3 :: pid = 7, page index = 1, spin 5 seconds before lock_page()...
[ 170.200011] kp1_pre_
[ 170.217616] kp1_pre_
[ 170.238633] kp2_pre_
[ 170.248024] kp3_pre_
[ 170.261141] kp1_pre_
[ 170.272150] kp2_pre_
[ 170.279860] kp2_pre_