md/r5cache: improve recovery with read ahead page pool
authorSong Liu <songliubraving@fb.com>
Wed, 8 Mar 2017 00:49:17 +0000 (16:49 -0800)
committerShaohua Li <shli@fb.com>
Thu, 16 Mar 2017 23:55:53 +0000 (16:55 -0700)
commiteffe6ee7523aa50d0517bd7da141e112b44d89fa
tree5cc84ee752171cb564173d6f4ebe45574a9e6070
parentaaf9f12ebfafd1ea603d61ead6dbcf456a86e0f3
md/r5cache: improve recovery with read ahead page pool

In r5cache recovery, the journal device is scanned page by page.
Currently, we use sync_page_io() to read journal device. This is
not efficient when we have to recovery many stripes from the journal.

To improve the speed of recovery, this patch introduces a read ahead
page pool (ra_pool) to recovery_ctx. With ra_pool, multiple consecutive
pages are read in one IO. Then the recovery code read the journal from
ra_pool.

With ra_pool, r5l_recovery_ctx has become much bigger. Therefore,
r5l_recovery_log() is refactored so r5l_recovery_ctx is not using
stack space.

Signed-off-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Shaohua Li <shli@fb.com>
drivers/md/raid5-cache.c