[lkml]   [2021]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[PATCH v5 0/4] close various race windows for swap
Hi all,
When I was investigating the swap code, I found some possible race
windows. This series aims to fix all these races. But using current
get/put_swap_device() to guard against concurrent swapoff for
swap_readpage() looks terrible because swap_readpage() may take really
long time. And to reduce the performance overhead on the hot-path as
much as possible, it appears we can use the percpu_ref to close this
race window(as suggested by Huang, Ying). The patch 1 adds percpu_ref
support for swap and most of the remaining patches try to use this to
close various race windows. More details can be found in the respective
changelogs. Thanks!

collect Reviewed-by tag
do put_swap_device() before returning from the function per Huang, Ying

some commit log and comment enhance per Huang, Ying
put get/put_swap_device() in shmem_swapin_page() per Huang, Ying
collect Reviewed-by tag

some commit log and comment enhance per Huang, Ying
remove ref_initialized field
squash PATCH 1-2

reorganize the patch-2/5
various enhance and fixup per Huang, Ying
Many thanks for the comments of Huang, Ying, Dennis Zhou and Tim Chen.

Miaohe Lin (4):
mm/swapfile: use percpu_ref to serialize against concurrent swapoff
swap: fix do_swap_page() race with swapoff
mm/swap: remove confusing checking for non_swap_entry() in
mm/shmem: fix shmem_swapin() race with swapoff

include/linux/swap.h | 14 ++++++--
mm/memory.c | 11 ++++--
mm/shmem.c | 12 +++++++
mm/swap_state.c | 6 ----
mm/swapfile.c | 79 +++++++++++++++++++++++++++-----------------
5 files changed, 82 insertions(+), 40 deletions(-)


 \ /
  Last update: 2021-04-25 11:57    [W:0.046 / U:6.552 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site