On Tue, 10 May 2022 10:03:19 +0800 Miaohe Lin <linmiaohe@xxxxxxxxxx> wrote: > On 2022/5/10 8:45, NeilBrown wrote: > > On Mon, 09 May 2022, Miaohe Lin wrote: > >> Add helper swap_offset_available() to remove some duplicated codes. > >> Minor readability improvement. > > > > I don't think that putting the spin_lock() inside the inline helper is > > good for readability. > > If the function was called > > swap_offset_available_and_locked() > > Yes, swap_offset_available_and_locked should be more suitable as we do the spin_lock > inside it. Will do this in next version. > --- a/mm/swapfile.c~mm-swap-add-helper-swap_offset_available-fix +++ a/mm/swapfile.c @@ -775,7 +775,8 @@ static void set_cluster_next(struct swap this_cpu_write(*si->cluster_next_cpu, next); } -static inline bool swap_offset_available(struct swap_info_struct *si, unsigned long offset) +static bool swap_offset_available_and_locked(struct swap_info_struct *si, + unsigned long offset) { if (data_race(!si->swap_map[offset])) { spin_lock(&si->lock); @@ -967,7 +968,7 @@ done: scan: spin_unlock(&si->lock); while (++offset <= READ_ONCE(si->highest_bit)) { - if (swap_offset_available(si, offset)) + if (swap_offset_available_and_locked(si, offset)) goto checks; if (unlikely(--latency_ration < 0)) { cond_resched(); @@ -977,7 +978,7 @@ scan: } offset = si->lowest_bit; while (offset < scan_base) { - if (swap_offset_available(si, offset)) + if (swap_offset_available_and_locked(si, offset)) goto checks; if (unlikely(--latency_ration < 0)) { cond_resched(); _